[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