diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2013-09-25 15:55:42 +0200 |
---|---|---|
committer | Frediano Ziglio <fziglio@redhat.com> | 2015-11-20 10:22:00 +0000 |
commit | ff070be68f11b934bc22ea51c6b3c66db2c4d745 (patch) | |
tree | ec2ca99c38d7654d258e946b822f93e69b681346 | |
parent | f06ce6c1c45721182e88a8a580d3037489369371 (diff) | |
download | spice-ff070be68f11b934bc22ea51c6b3c66db2c4d745.tar.gz spice-ff070be68f11b934bc22ea51c6b3c66db2c4d745.tar.xz spice-ff070be68f11b934bc22ea51c6b3c66db2c4d745.zip |
worker: move stream_clip_item_unref()
Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
-rw-r--r-- | server/red_worker.c | 14 | ||||
-rw-r--r-- | server/stream.c | 12 | ||||
-rw-r--r-- | 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; |