From ff070be68f11b934bc22ea51c6b3c66db2c4d745 Mon Sep 17 00:00:00 2001 From: Marc-AndrĂ© Lureau Date: Wed, 25 Sep 2013 15:55:42 +0200 Subject: worker: move stream_clip_item_unref() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Acked-by: Fabiano FidĂȘncio --- server/red_worker.c | 14 ++------------ server/stream.c | 12 ++++++++++++ server/stream.h | 6 ++++-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/server/red_worker.c b/server/red_worker.c index ab4253d6..6d974d6d 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -192,16 +192,6 @@ static void red_create_surface(DisplayChannel *display, uint32_t surface_id, uin uint32_t height, int32_t stride, uint32_t format, void *line_0, int data_is_valid, int send_client); -static void display_stream_clip_unref(DisplayChannel *display, StreamClipItem *item) -{ - if (--item->refs != 0) - return; - - stream_agent_unref(display, item->stream_agent); - free(item->rects); - free(item); -} - void attach_stream(DisplayChannel *display, Drawable *drawable, Stream *stream) { DisplayChannelClient *dcc; @@ -5477,7 +5467,7 @@ static void display_channel_client_release_item_after_push(DisplayChannelClient drawable_pipe_item_unref(SPICE_CONTAINEROF(item, DrawablePipeItem, dpi_pipe_item)); break; case PIPE_ITEM_TYPE_STREAM_CLIP: - display_stream_clip_unref(display, (StreamClipItem *)item); + stream_clip_item_unref(dcc, (StreamClipItem *)item); break; case PIPE_ITEM_TYPE_UPGRADE: upgrade_item_unref(display, (UpgradeItem *)item); @@ -5520,7 +5510,7 @@ static void display_channel_client_release_item_before_push(DisplayChannelClient break; } case PIPE_ITEM_TYPE_STREAM_CLIP: - display_stream_clip_unref(display, (StreamClipItem *)item); + stream_clip_item_unref(dcc, (StreamClipItem *)item); break; case PIPE_ITEM_TYPE_STREAM_DESTROY: { StreamAgent *agent = SPICE_CONTAINEROF(item, StreamAgent, destroy_item); diff --git a/server/stream.c b/server/stream.c index f242da76..a2acd3a8 100644 --- a/server/stream.c +++ b/server/stream.c @@ -145,6 +145,18 @@ StreamClipItem *stream_clip_item_new(DisplayChannelClient* dcc, StreamAgent *age return item; } +void stream_clip_item_unref(DisplayChannelClient *dcc, StreamClipItem *item) +{ + DisplayChannel *display = DCC_TO_DC(dcc); + + if (--item->refs != 0) + return; + + stream_agent_unref(display, item->stream_agent); + free(item->rects); + free(item); +} + static int is_stream_start(Drawable *drawable) { return ((drawable->frames_count >= RED_STREAM_FRAMES_START_CONDITION) && diff --git a/server/stream.h b/server/stream.h index 0577dc86..3627b0f5 100644 --- a/server/stream.h +++ b/server/stream.h @@ -107,8 +107,10 @@ typedef struct StreamClipItem { SpiceClipRects *rects; } StreamClipItem; -StreamClipItem *stream_clip_item_new(DisplayChannelClient* dcc, - StreamAgent *agent); +StreamClipItem * stream_clip_item_new (DisplayChannelClient* dcc, + StreamAgent *agent); +void stream_clip_item_unref (DisplayChannelClient *dcc, + StreamClipItem *item); typedef struct ItemTrace { red_time_t time; -- cgit