[Spice-devel] [PATCH 16/26] server/red_worker: complete removal of send_data.marshaller use
Marc-André Lureau
marcandre.lureau at gmail.com
Mon Feb 14 17:29:31 PST 2011
nack, (same reasons: against object encapsulation principle)
On Fri, Feb 11, 2011 at 6:49 PM, Alon Levy <alevy at redhat.com> wrote:
> ---
> server/red_worker.c | 52 ++++++++++++++++++++++++++++----------------------
> 1 files changed, 29 insertions(+), 23 deletions(-)
>
> diff --git a/server/red_worker.c b/server/red_worker.c
> index 6380cc5..e5117cd 100644
> --- a/server/red_worker.c
> +++ b/server/red_worker.c
> @@ -924,7 +924,8 @@ static void red_display_release_stream(DisplayChannel *display, StreamAgent *age
> static inline void red_detach_stream(RedWorker *worker, Stream *stream);
> static void red_stop_stream(RedWorker *worker, Stream *stream);
> static inline void red_stream_maintenance(RedWorker *worker, Drawable *candidate, Drawable *sect);
> -static inline void display_begin_send_message(DisplayChannel *channel);
> +static inline void display_begin_send_message(DisplayChannel *channel,
> + SpiceDataHeader *header, SpiceMarshaller *base_marshaller);
> static void red_release_pixmap_cache(DisplayChannel *channel);
> static void red_release_glz(DisplayChannel *channel);
> static void red_freeze_glz(DisplayChannel *channel);
> @@ -7215,7 +7216,8 @@ static void display_channel_push_release(DisplayChannel *channel, uint8_t type,
> free_list->res->resources[free_list->res->count++].id = id;
> }
>
> -static inline void display_begin_send_message(DisplayChannel *channel)
> +static inline void display_begin_send_message(DisplayChannel *channel,
> + SpiceDataHeader *header, SpiceMarshaller *base_marshaller)
> {
> FreeList *free_list = &channel->send_data.free_list;
>
> @@ -7226,7 +7228,7 @@ static inline void display_begin_send_message(DisplayChannel *channel)
> int sync_count = 0;
> int i;
>
> - inval_m = spice_marshaller_get_submarshaller(channel->common.base.send_data.marshaller);
> + inval_m = spice_marshaller_get_submarshaller(base_marshaller);
>
> /* type + size + submessage */
> spice_marshaller_add_uint16(inval_m, SPICE_MSG_DISPLAY_INVAL_LIST);
> @@ -7244,7 +7246,7 @@ static inline void display_begin_send_message(DisplayChannel *channel)
> free_list->wait.header.wait_count = sync_count;
>
> if (sync_count) {
> - wait_m = spice_marshaller_get_submarshaller(channel->common.base.send_data.marshaller);
> + wait_m = spice_marshaller_get_submarshaller(base_marshaller);
>
> /* type + size + submessage */
> spice_marshaller_add_uint16(wait_m, SPICE_MSG_WAIT_FOR_CHANNELS);
> @@ -7254,13 +7256,13 @@ static inline void display_begin_send_message(DisplayChannel *channel)
> sub_list_len++;
> }
>
> - SpiceMarshaller *sub_list_m = spice_marshaller_get_submarshaller(channel->common.base.send_data.marshaller);
> + SpiceMarshaller *sub_list_m = spice_marshaller_get_submarshaller(base_marshaller);
> spice_marshaller_add_uint16(sub_list_m, sub_list_len);
> if (wait_m) {
> spice_marshaller_add_uint32(sub_list_m, spice_marshaller_get_offset(wait_m));
> }
> spice_marshaller_add_uint32(sub_list_m, spice_marshaller_get_offset(inval_m));
> - channel->common.base.send_data.header->sub_list = spice_marshaller_get_offset(sub_list_m);
> + header->sub_list = spice_marshaller_get_offset(sub_list_m);
> }
> red_channel_begin_send_message((RedChannel *)channel);
> }
> @@ -7605,7 +7607,8 @@ static void display_channel_marshall_migrate(DisplayChannel *display_channel, Sp
> display_channel->expect_migrate_mark = TRUE;
> }
>
> -static void display_channel_marshall_migrate_data(DisplayChannel *display_channel)
> +static void display_channel_marshall_migrate_data(DisplayChannel *display_channel,
> + SpiceMarshaller *base_marshaller)
> {
> DisplayChannelMigrateData display_data;
>
> @@ -7631,11 +7634,12 @@ static void display_channel_marshall_migrate_data(DisplayChannel *display_channe
> &display_data.glz_dict_restore_data,
> &display_channel->glz_data.usr);
>
> - spice_marshaller_add_ref(display_channel->common.base.send_data.marshaller,
> + spice_marshaller_add_ref(base_marshaller,
> (uint8_t *)&display_data, sizeof(display_data));
> }
>
> -static void display_channel_marshall_pixmap_sync(DisplayChannel *display_channel)
> +static void display_channel_marshall_pixmap_sync(DisplayChannel *display_channel,
> + SpiceMarshaller *base_marshaller)
> {
> SpiceMsgWaitForChannels wait;
> PixmapCache *pixmap_cache;
> @@ -7654,17 +7658,18 @@ static void display_channel_marshall_pixmap_sync(DisplayChannel *display_channel
>
> pthread_mutex_unlock(&pixmap_cache->lock);
>
> - spice_marshall_msg_wait_for_channels(display_channel->common.base.send_data.marshaller, &wait);
> + spice_marshall_msg_wait_for_channels(base_marshaller, &wait);
> }
>
> -static void display_channel_marshall_reset_cache(DisplayChannel *display_channel)
> +static void display_channel_marshall_reset_cache(DisplayChannel *display_channel,
> + SpiceMarshaller *base_marshaller)
> {
> SpiceMsgWaitForChannels wait;
>
> red_channel_init_send_data(&display_channel->common.base, SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS, NULL);
> pixmap_cache_reset(display_channel->pixmap_cache, display_channel, &wait);
>
> - spice_marshall_msg_display_inval_all_pixmaps(display_channel->common.base.send_data.marshaller,
> + spice_marshall_msg_display_inval_all_pixmaps(base_marshaller,
> &wait);
> }
>
> @@ -7907,7 +7912,7 @@ static void red_cursor_marshall_inval(CursorChannel *channel,
> red_marshall_inval((RedChannel *)channel, m, cach_item);
> }
>
> -static void red_marshall_cursor_init(CursorChannel *channel)
> +static void red_marshall_cursor_init(CursorChannel *channel, SpiceMarshaller *base_marshaller)
> {
> RedWorker *worker;
> SpiceMsgCursorInit msg;
> @@ -7924,8 +7929,8 @@ static void red_marshall_cursor_init(CursorChannel *channel)
> msg.trail_frequency = worker->cursor_trail_frequency;
>
> fill_cursor(channel, &msg.cursor, worker->cursor, &info);
> - spice_marshall_msg_cursor_init(channel->common.base.send_data.marshaller, &msg);
> - add_buf_from_info(&channel->common.base, channel->common.base.send_data.marshaller, &info);
> + spice_marshall_msg_cursor_init(base_marshaller, &msg);
> + add_buf_from_info(&channel->common.base, base_marshaller, &info);
> }
>
> static void red_marshall_local_cursor(CursorChannel *cursor_channel,
> @@ -7949,14 +7954,15 @@ static void red_marshall_local_cursor(CursorChannel *cursor_channel,
> red_release_cursor(worker, (CursorItem *)cursor);
> }
>
> -static void cursor_channel_marshall_migrate(CursorChannel *cursor_channel)
> +static void cursor_channel_marshall_migrate(CursorChannel *cursor_channel,
> + SpiceMarshaller *base_marshaller)
> {
> SpiceMsgMigrate migrate;
>
> red_channel_init_send_data(&cursor_channel->common.base, SPICE_MSG_MIGRATE, NULL);
> migrate.flags = 0;
>
> - spice_marshall_msg_migrate(cursor_channel->common.base.send_data.marshaller, &migrate);
> + spice_marshall_msg_migrate(base_marshaller, &migrate);
> }
>
> static void red_marshall_cursor(CursorChannel *cursor_channel,
> @@ -8096,7 +8102,7 @@ static void display_channel_send_item(RedChannel *base, SpiceDataHeader *header,
> free(pipe_item);
> break;
> case PIPE_ITEM_TYPE_MIGRATE_DATA:
> - display_channel_marshall_migrate_data(display_channel);
> + display_channel_marshall_migrate_data(display_channel, m);
> free(pipe_item);
> break;
> case PIPE_ITEM_TYPE_IMAGE:
> @@ -8104,11 +8110,11 @@ static void display_channel_send_item(RedChannel *base, SpiceDataHeader *header,
> release_image_item((ImageItem *)pipe_item);
> break;
> case PIPE_ITEM_TYPE_PIXMAP_SYNC:
> - display_channel_marshall_pixmap_sync(display_channel);
> + display_channel_marshall_pixmap_sync(display_channel, m);
> free(pipe_item);
> break;
> case PIPE_ITEM_TYPE_PIXMAP_RESET:
> - display_channel_marshall_reset_cache(display_channel);
> + display_channel_marshall_reset_cache(display_channel, m);
> free(pipe_item);
> break;
> case PIPE_ITEM_TYPE_INVAL_PALLET_CACHE:
> @@ -8135,7 +8141,7 @@ static void display_channel_send_item(RedChannel *base, SpiceDataHeader *header,
> }
> // a message is pending
> if (red_channel_send_message_pending(&display_channel->common.base)) {
> - display_begin_send_message(display_channel);
> + display_begin_send_message(display_channel, header, m);
> }
> red_unref_channel(&display_channel->common.base);
> }
> @@ -8163,12 +8169,12 @@ static void cursor_channel_send_item(RedChannel *channel, SpiceDataHeader *heade
> break;
> case PIPE_ITEM_TYPE_MIGRATE:
> red_printf("PIPE_ITEM_TYPE_MIGRATE");
> - cursor_channel_marshall_migrate(cursor_channel);
> + cursor_channel_marshall_migrate(cursor_channel, m);
> free(pipe_item);
> break;
> case PIPE_ITEM_TYPE_CURSOR_INIT:
> red_reset_cursor_cache(cursor_channel);
> - red_marshall_cursor_init(cursor_channel);
> + red_marshall_cursor_init(cursor_channel, m);
> free(pipe_item);
> break;
> case PIPE_ITEM_TYPE_INVAL_CURSOR_CACHE:
> --
> 1.7.4
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
>
--
Marc-André Lureau
More information about the Spice-devel
mailing list