Move this function into display-channel.c since it deals with how the DisplayChannel allocates and manages the video streams, rather than implementation of VideoStream. Also move some helper functions that are DisplayChannel-specific. --- server/display-channel.c | 26 ++++++++++++++++++++++++++ server/display-channel.h | 2 ++ server/video-stream.c | 28 +--------------------------- server/video-stream.h | 1 - 4 files changed, 29 insertions(+), 28 deletions(-) diff --git a/server/display-channel.c b/server/display-channel.c index 360c887f8..8c3d72899 100644 --- a/server/display-channel.c +++ b/server/display-channel.c @@ -2273,6 +2273,32 @@ display_channel_init(DisplayChannel *self) self->priv->image_surfaces.ops = &image_surfaces_ops; } +static void video_stream_recycle(DisplayChannel *display, VideoStream *stream) +{ + stream->next = display->priv->free_streams; + display->priv->free_streams = stream; +} + +void display_channel_free_video_stream(DisplayChannel *display, + VideoStream *stream) +{ + video_stream_recycle(display, stream); + display->priv->stream_count--; +} + +static void display_channel_init_video_streams(DisplayChannel *display) +{ + int i; + + ring_init(&display->priv->streams); + display->priv->free_streams = NULL; + for (i = 0; i < NUM_STREAMS; i++) { + VideoStream *stream = display_channel_get_nth_stream(display, i); + ring_item_init(&stream->link); + video_stream_recycle(display, stream); + } +} + static void display_channel_constructed(GObject *object) { diff --git a/server/display-channel.h b/server/display-channel.h index 4f7def216..377fc7ea7 100644 --- a/server/display-channel.h +++ b/server/display-channel.h @@ -157,6 +157,8 @@ void display_channel_gl_scanout (DisplayCha void display_channel_gl_draw (DisplayChannel *display, SpiceMsgDisplayGlDraw *draw); void display_channel_gl_draw_done (DisplayChannel *display); +void display_channel_free_video_stream (DisplayChannel *display, + VideoStream *stream); void display_channel_update_monitors_config(DisplayChannel *display, QXLMonitorsConfig *config, uint16_t count, uint16_t max_allowed); diff --git a/server/video-stream.c b/server/video-stream.c index 757497950..a88d0ae5f 100644 --- a/server/video-stream.c +++ b/server/video-stream.c @@ -45,32 +45,6 @@ void video_stream_stop(DisplayChannel *display, VideoStream *stream) video_stream_unref(stream); } -static void video_stream_recycle(DisplayChannel *display, VideoStream *stream) -{ - stream->next = display->priv->free_streams; - display->priv->free_streams = stream; -} - -static void video_stream_free(VideoStream *stream) -{ - DisplayChannel *display = stream->display; - video_stream_recycle(display, stream); - display->priv->stream_count--; -} - -void display_channel_init_video_streams(DisplayChannel *display) -{ - int i; - - ring_init(&display->priv->streams); - display->priv->free_streams = NULL; - for (i = 0; i < NUM_STREAMS; i++) { - VideoStream *stream = display_channel_get_nth_stream(display, i); - ring_item_init(&stream->link); - video_stream_recycle(display, stream); - } -} - void video_stream_unref(VideoStream *stream) { if (--stream->refs != 0) @@ -78,7 +52,7 @@ void video_stream_unref(VideoStream *stream) spice_warn_if_fail(!ring_item_is_linked(&stream->link)); - video_stream_free(stream); + display_channel_free_video_stream(stream->display, stream); } void video_stream_agent_unref(VideoStreamAgent *agent) diff --git a/server/video-stream.h b/server/video-stream.h index f818c8c5d..cc1b7b0ce 100644 --- a/server/video-stream.h +++ b/server/video-stream.h @@ -114,7 +114,6 @@ struct VideoStream { DisplayChannel *display; }; -void display_channel_init_video_streams (DisplayChannel *display); void video_stream_stop (DisplayChannel *display, VideoStream *stream); void video_stream_unref (VideoStream *stream); -- 2.13.6 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel