server: add reds_channel_dispose()

Try to have a common base dispose() method for channels. For now, it
just free the caps.

Make use of it in snd_worker, and in sync_write() - sync_write() is
going to have default caps later on.

https://bugs.freedesktop.org/show_bug.cgi?id=34795
This commit is contained in:
Marc-André Lureau 2011-02-22 03:52:38 +01:00 committed by Alon Levy
parent 159fee00c2
commit bb6747b3d5
3 changed files with 14 additions and 2 deletions

View File

@ -1881,6 +1881,17 @@ static int sync_write(RedsStream *stream, const void *in_buf, size_t n)
return TRUE;
}
void reds_channel_dispose(Channel *channel)
{
free(channel->caps);
channel->caps = NULL;
channel->num_caps = 0;
free(channel->common_caps);
channel->common_caps = NULL;
channel->num_common_caps = 0;
}
static int reds_send_link_ack(RedLinkInfo *link)
{
SpiceLinkHeader header;

View File

@ -80,6 +80,8 @@ struct SpiceNetWireState {
struct TunnelWorker *worker;
};
void reds_channel_dispose(Channel *channel);
ssize_t reds_stream_read(RedsStream *s, void *buf, size_t nbyte);
ssize_t reds_stream_write(RedsStream *s, const void *buf, size_t nbyte);
ssize_t reds_stream_writev(RedsStream *s, const struct iovec *iov, int iovcnt);

View File

@ -1236,8 +1236,7 @@ static void snd_detach_common(SndWorker *worker)
snd_disconnect_channel(worker->connection);
reds_unregister_channel(&worker->base);
free(worker->base.common_caps);
free(worker->base.caps);
reds_channel_dispose(&worker->base);
}
void snd_detach_playback(SpicePlaybackInstance *sin)