mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2026-01-01 04:45:37 +00:00
Use "base" as pipe item base field name
Most of pipe items use this name for the base field. This also allows to use SPICE_UPCAST macros instead of a long SPICE_CONTAINEROF. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Christophe Fergeau <cfergeau@redhat.com>
This commit is contained in:
parent
b93173c1e0
commit
83fd1bb4ff
@ -638,7 +638,7 @@ static bool pipe_rendered_drawables_intersect_with_areas(DisplayChannelClient *d
|
||||
|
||||
if (pipe_item->type != RED_PIPE_ITEM_TYPE_DRAW)
|
||||
continue;
|
||||
drawable = SPICE_CONTAINEROF(pipe_item, RedDrawablePipeItem, dpi_pipe_item)->drawable;
|
||||
drawable = SPICE_UPCAST(RedDrawablePipeItem, pipe_item)->drawable;
|
||||
|
||||
if (ring_item_is_linked(&drawable->list_link))
|
||||
continue; // item hasn't been rendered
|
||||
@ -731,7 +731,7 @@ static void red_pipe_replace_rendered_drawables_with_images(DisplayChannelClient
|
||||
|
||||
if (pipe_item->type != RED_PIPE_ITEM_TYPE_DRAW)
|
||||
continue;
|
||||
dpi = SPICE_CONTAINEROF(pipe_item, RedDrawablePipeItem, dpi_pipe_item);
|
||||
dpi = SPICE_UPCAST(RedDrawablePipeItem, pipe_item);
|
||||
drawable = dpi->drawable;
|
||||
if (ring_item_is_linked(&drawable->list_link))
|
||||
continue; // item hasn't been rendered
|
||||
@ -2392,7 +2392,7 @@ void dcc_send_item(RedChannelClient *rcc, RedPipeItem *pipe_item)
|
||||
reset_send_data(dcc);
|
||||
switch (pipe_item->type) {
|
||||
case RED_PIPE_ITEM_TYPE_DRAW: {
|
||||
RedDrawablePipeItem *dpi = SPICE_CONTAINEROF(pipe_item, RedDrawablePipeItem, dpi_pipe_item);
|
||||
RedDrawablePipeItem *dpi = SPICE_UPCAST(RedDrawablePipeItem, pipe_item);
|
||||
marshall_qxl_drawable(rcc, m, dpi);
|
||||
break;
|
||||
}
|
||||
@ -2432,28 +2432,23 @@ void dcc_send_item(RedChannelClient *rcc, RedPipeItem *pipe_item)
|
||||
red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES);
|
||||
break;
|
||||
case RED_PIPE_ITEM_TYPE_CREATE_SURFACE: {
|
||||
RedSurfaceCreateItem *surface_create = SPICE_CONTAINEROF(pipe_item, RedSurfaceCreateItem,
|
||||
pipe_item);
|
||||
RedSurfaceCreateItem *surface_create = SPICE_UPCAST(RedSurfaceCreateItem, pipe_item);
|
||||
marshall_surface_create(rcc, m, &surface_create->surface_create);
|
||||
break;
|
||||
}
|
||||
case RED_PIPE_ITEM_TYPE_DESTROY_SURFACE: {
|
||||
RedSurfaceDestroyItem *surface_destroy = SPICE_CONTAINEROF(pipe_item, RedSurfaceDestroyItem,
|
||||
pipe_item);
|
||||
RedSurfaceDestroyItem *surface_destroy = SPICE_UPCAST(RedSurfaceDestroyItem, pipe_item);
|
||||
marshall_surface_destroy(rcc, m, surface_destroy->surface_destroy.surface_id);
|
||||
break;
|
||||
}
|
||||
case RED_PIPE_ITEM_TYPE_MONITORS_CONFIG: {
|
||||
RedMonitorsConfigItem *monconf_item = SPICE_CONTAINEROF(pipe_item,
|
||||
RedMonitorsConfigItem,
|
||||
pipe_item);
|
||||
RedMonitorsConfigItem *monconf_item = SPICE_UPCAST(RedMonitorsConfigItem, pipe_item);
|
||||
marshall_monitors_config(rcc, m, monconf_item->monitors_config);
|
||||
break;
|
||||
}
|
||||
case RED_PIPE_ITEM_TYPE_STREAM_ACTIVATE_REPORT: {
|
||||
RedStreamActivateReportItem *report_item = SPICE_CONTAINEROF(pipe_item,
|
||||
RedStreamActivateReportItem,
|
||||
pipe_item);
|
||||
RedStreamActivateReportItem *report_item =
|
||||
SPICE_UPCAST(RedStreamActivateReportItem, pipe_item);
|
||||
marshall_stream_activate_report(rcc, m, report_item);
|
||||
break;
|
||||
}
|
||||
|
||||
29
server/dcc.c
29
server/dcc.c
@ -202,7 +202,7 @@ static RedSurfaceCreateItem *red_surface_create_item_new(RedChannel* channel,
|
||||
create->surface_create.flags = flags;
|
||||
create->surface_create.format = format;
|
||||
|
||||
red_pipe_item_init(&create->pipe_item, RED_PIPE_ITEM_TYPE_CREATE_SURFACE);
|
||||
red_pipe_item_init(&create->base, RED_PIPE_ITEM_TYPE_CREATE_SURFACE);
|
||||
return create;
|
||||
}
|
||||
|
||||
@ -246,7 +246,7 @@ bool dcc_clear_surface_drawables_from_pipe(DisplayChannelClient *dcc, int surfac
|
||||
|
||||
l = l->next;
|
||||
if (item->type == RED_PIPE_ITEM_TYPE_DRAW) {
|
||||
dpi = SPICE_CONTAINEROF(item, RedDrawablePipeItem, dpi_pipe_item);
|
||||
dpi = SPICE_UPCAST(RedDrawablePipeItem, item);
|
||||
drawable = dpi->drawable;
|
||||
} else if (item->type == RED_PIPE_ITEM_TYPE_UPGRADE) {
|
||||
drawable = SPICE_UPCAST(RedUpgradeItem, item)->drawable;
|
||||
@ -313,7 +313,7 @@ void dcc_create_surface(DisplayChannelClient *dcc, int surface_id)
|
||||
surface->context.height,
|
||||
surface->context.format, flags);
|
||||
dcc->priv->surface_client_created[surface_id] = TRUE;
|
||||
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &create->pipe_item);
|
||||
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &create->base);
|
||||
}
|
||||
|
||||
// adding the pipe item after pos. If pos == NULL, adding to head.
|
||||
@ -433,8 +433,7 @@ static void add_drawable_surface_images(DisplayChannelClient *dcc, Drawable *dra
|
||||
|
||||
static void red_drawable_pipe_item_free(RedPipeItem *item)
|
||||
{
|
||||
RedDrawablePipeItem *dpi = SPICE_CONTAINEROF(item, RedDrawablePipeItem,
|
||||
dpi_pipe_item);
|
||||
RedDrawablePipeItem *dpi = SPICE_UPCAST(RedDrawablePipeItem, item);
|
||||
spice_assert(item->refcount == 0);
|
||||
|
||||
dpi->drawable->pipes = g_list_remove(dpi->drawable->pipes, dpi);
|
||||
@ -451,7 +450,7 @@ static RedDrawablePipeItem *red_drawable_pipe_item_new(DisplayChannelClient *dcc
|
||||
dpi->drawable = drawable;
|
||||
dpi->dcc = dcc;
|
||||
drawable->pipes = g_list_prepend(drawable->pipes, dpi);
|
||||
red_pipe_item_init_full(&dpi->dpi_pipe_item, RED_PIPE_ITEM_TYPE_DRAW,
|
||||
red_pipe_item_init_full(&dpi->base, RED_PIPE_ITEM_TYPE_DRAW,
|
||||
red_drawable_pipe_item_free);
|
||||
drawable->refs++;
|
||||
return dpi;
|
||||
@ -462,7 +461,7 @@ void dcc_prepend_drawable(DisplayChannelClient *dcc, Drawable *drawable)
|
||||
RedDrawablePipeItem *dpi = red_drawable_pipe_item_new(dcc, drawable);
|
||||
|
||||
add_drawable_surface_images(dcc, drawable);
|
||||
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &dpi->dpi_pipe_item);
|
||||
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &dpi->base);
|
||||
}
|
||||
|
||||
void dcc_append_drawable(DisplayChannelClient *dcc, Drawable *drawable)
|
||||
@ -470,7 +469,7 @@ void dcc_append_drawable(DisplayChannelClient *dcc, Drawable *drawable)
|
||||
RedDrawablePipeItem *dpi = red_drawable_pipe_item_new(dcc, drawable);
|
||||
|
||||
add_drawable_surface_images(dcc, drawable);
|
||||
red_channel_client_pipe_add_tail(RED_CHANNEL_CLIENT(dcc), &dpi->dpi_pipe_item);
|
||||
red_channel_client_pipe_add_tail(RED_CHANNEL_CLIENT(dcc), &dpi->base);
|
||||
}
|
||||
|
||||
void dcc_add_drawable_after(DisplayChannelClient *dcc, Drawable *drawable, RedPipeItem *pos)
|
||||
@ -478,7 +477,7 @@ void dcc_add_drawable_after(DisplayChannelClient *dcc, Drawable *drawable, RedPi
|
||||
RedDrawablePipeItem *dpi = red_drawable_pipe_item_new(dcc, drawable);
|
||||
|
||||
add_drawable_surface_images(dcc, drawable);
|
||||
red_channel_client_pipe_add_after(RED_CHANNEL_CLIENT(dcc), &dpi->dpi_pipe_item, pos);
|
||||
red_channel_client_pipe_add_after(RED_CHANNEL_CLIENT(dcc), &dpi->base, pos);
|
||||
}
|
||||
|
||||
static void dcc_init_stream_agents(DisplayChannelClient *dcc)
|
||||
@ -634,9 +633,9 @@ void dcc_video_stream_agent_clip(DisplayChannelClient* dcc, VideoStreamAgent *ag
|
||||
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &item->base);
|
||||
}
|
||||
|
||||
static void red_monitors_config_item_free(RedPipeItem *base)
|
||||
static void red_monitors_config_item_free(RedPipeItem *pipe_item)
|
||||
{
|
||||
RedMonitorsConfigItem *item = SPICE_CONTAINEROF(base, RedMonitorsConfigItem, pipe_item);
|
||||
RedMonitorsConfigItem *item = SPICE_UPCAST(RedMonitorsConfigItem, pipe_item);
|
||||
|
||||
monitors_config_unref(item->monitors_config);
|
||||
g_free(item);
|
||||
@ -650,7 +649,7 @@ static RedMonitorsConfigItem *red_monitors_config_item_new(RedChannel* channel,
|
||||
mci = g_new(RedMonitorsConfigItem, 1);
|
||||
mci->monitors_config = monitors_config_ref(monitors_config);
|
||||
|
||||
red_pipe_item_init_full(&mci->pipe_item, RED_PIPE_ITEM_TYPE_MONITORS_CONFIG,
|
||||
red_pipe_item_init_full(&mci->base, RED_PIPE_ITEM_TYPE_MONITORS_CONFIG,
|
||||
red_monitors_config_item_free);
|
||||
return mci;
|
||||
}
|
||||
@ -673,7 +672,7 @@ void dcc_push_monitors_config(DisplayChannelClient *dcc)
|
||||
|
||||
mci = red_monitors_config_item_new(red_channel_client_get_channel(RED_CHANNEL_CLIENT(dcc)),
|
||||
monitors_config);
|
||||
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &mci->pipe_item);
|
||||
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &mci->base);
|
||||
}
|
||||
|
||||
static RedSurfaceDestroyItem *red_surface_destroy_item_new(uint32_t surface_id)
|
||||
@ -682,7 +681,7 @@ static RedSurfaceDestroyItem *red_surface_destroy_item_new(uint32_t surface_id)
|
||||
|
||||
destroy = g_new(RedSurfaceDestroyItem, 1);
|
||||
destroy->surface_destroy.surface_id = surface_id;
|
||||
red_pipe_item_init(&destroy->pipe_item, RED_PIPE_ITEM_TYPE_DESTROY_SURFACE);
|
||||
red_pipe_item_init(&destroy->base, RED_PIPE_ITEM_TYPE_DESTROY_SURFACE);
|
||||
|
||||
return destroy;
|
||||
}
|
||||
@ -744,7 +743,7 @@ void dcc_destroy_surface(DisplayChannelClient *dcc, uint32_t surface_id)
|
||||
|
||||
dcc->priv->surface_client_created[surface_id] = FALSE;
|
||||
destroy = red_surface_destroy_item_new(surface_id);
|
||||
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &destroy->pipe_item);
|
||||
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &destroy->base);
|
||||
}
|
||||
|
||||
#define MIN_DIMENSION_TO_QUIC 3
|
||||
|
||||
@ -96,7 +96,7 @@ typedef struct FreeList {
|
||||
#define DCC_TO_DC(dcc) ((DisplayChannel*)red_channel_client_get_channel((RedChannelClient*)dcc))
|
||||
|
||||
typedef struct RedSurfaceCreateItem {
|
||||
RedPipeItem pipe_item;
|
||||
RedPipeItem base;
|
||||
SpiceMsgSurfaceCreate surface_create;
|
||||
} RedSurfaceCreateItem;
|
||||
|
||||
@ -124,7 +124,7 @@ typedef struct RedImageItem {
|
||||
} RedImageItem;
|
||||
|
||||
typedef struct RedDrawablePipeItem {
|
||||
RedPipeItem dpi_pipe_item;
|
||||
RedPipeItem base;
|
||||
Drawable *drawable;
|
||||
DisplayChannelClient *dcc;
|
||||
} RedDrawablePipeItem;
|
||||
|
||||
@ -132,7 +132,7 @@ struct DisplayChannelPrivate
|
||||
DisplayChannelClient, _data)
|
||||
|
||||
typedef struct RedMonitorsConfigItem {
|
||||
RedPipeItem pipe_item;
|
||||
RedPipeItem base;
|
||||
MonitorsConfig *monitors_config;
|
||||
} RedMonitorsConfigItem;
|
||||
|
||||
@ -174,7 +174,7 @@ int display_channel_get_video_stream_id(DisplayChannel *display, VideoStream *st
|
||||
VideoStream *display_channel_get_nth_video_stream(DisplayChannel *display, gint i);
|
||||
|
||||
typedef struct RedSurfaceDestroyItem {
|
||||
RedPipeItem pipe_item;
|
||||
RedPipeItem base;
|
||||
SpiceMsgSurfaceDestroy surface_destroy;
|
||||
} RedSurfaceDestroyItem;
|
||||
|
||||
|
||||
@ -385,7 +385,7 @@ static void pipes_add_drawable_after(DisplayChannel *display,
|
||||
dpi_pos_after = l->data;
|
||||
|
||||
num_other_linked++;
|
||||
dcc_add_drawable_after(dpi_pos_after->dcc, drawable, &dpi_pos_after->dpi_pipe_item);
|
||||
dcc_add_drawable_after(dpi_pos_after->dcc, drawable, &dpi_pos_after->base);
|
||||
}
|
||||
|
||||
if (num_other_linked == 0) {
|
||||
@ -446,7 +446,7 @@ static void drawable_remove_from_pipes(Drawable *drawable)
|
||||
RedChannelClient *rcc;
|
||||
|
||||
rcc = RED_CHANNEL_CLIENT(dpi->dcc);
|
||||
red_channel_client_pipe_remove_and_release(rcc, &dpi->dpi_pipe_item);
|
||||
red_channel_client_pipe_remove_and_release(rcc, &dpi->base);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -365,7 +365,7 @@ static void before_reattach_stream(DisplayChannel *display,
|
||||
agent = dcc_get_video_stream_agent(dcc, index);
|
||||
|
||||
if (red_channel_client_pipe_item_is_linked(RED_CHANNEL_CLIENT(dcc),
|
||||
&dpi->dpi_pipe_item)) {
|
||||
&dpi->base)) {
|
||||
#ifdef STREAM_STATS
|
||||
agent->stats.num_drops_pipe++;
|
||||
#endif
|
||||
@ -755,11 +755,11 @@ void dcc_create_stream(DisplayChannelClient *dcc, VideoStream *stream)
|
||||
RedStreamActivateReportItem *report_pipe_item = g_new0(RedStreamActivateReportItem, 1);
|
||||
|
||||
agent->report_id = rand();
|
||||
red_pipe_item_init(&report_pipe_item->pipe_item,
|
||||
red_pipe_item_init(&report_pipe_item->base,
|
||||
RED_PIPE_ITEM_TYPE_STREAM_ACTIVATE_REPORT);
|
||||
report_pipe_item->stream_id = stream_id;
|
||||
report_pipe_item->report_id = agent->report_id;
|
||||
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &report_pipe_item->pipe_item);
|
||||
red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &report_pipe_item->base);
|
||||
}
|
||||
#ifdef STREAM_STATS
|
||||
memset(&agent->stats, 0, sizeof(StreamStats));
|
||||
|
||||
@ -54,7 +54,7 @@ typedef struct RedUpgradeItem {
|
||||
} RedUpgradeItem;
|
||||
|
||||
typedef struct RedStreamActivateReportItem {
|
||||
RedPipeItem pipe_item;
|
||||
RedPipeItem base;
|
||||
uint32_t stream_id;
|
||||
uint32_t report_id;
|
||||
} RedStreamActivateReportItem;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user