summaryrefslogtreecommitdiffstats
path: root/server/display-channel.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2013-09-17 15:53:05 +0200
committerFrediano Ziglio <fziglio@redhat.com>2015-11-19 12:43:02 +0000
commit85920bb2e9715bc9317c2717cb14cc58f31f28ef (patch)
tree1976490e58270d90ce1fe0e486384df2b6ea64c3 /server/display-channel.c
parent806433a3bd092bc6225df7d7b7c5b5cc2cd97550 (diff)
downloadspice-85920bb2e9715bc9317c2717cb14cc58f31f28ef.tar.gz
spice-85920bb2e9715bc9317c2717cb14cc58f31f28ef.tar.xz
spice-85920bb2e9715bc9317c2717cb14cc58f31f28ef.zip
worker: start a DisplayChannelClient unit
Signed-off-by: Marc-André Lureau <marcandre.lureau@gmail.com> Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
Diffstat (limited to 'server/display-channel.c')
-rw-r--r--server/display-channel.c127
1 files changed, 2 insertions, 125 deletions
diff --git a/server/display-channel.c b/server/display-channel.c
index d4fcc7e2..9990c710 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -135,53 +135,6 @@ void display_channel_compress_stats_print(const DisplayChannel *display_channel)
#endif
}
-DisplayChannelClient *dcc_new(DisplayChannel *display,
- RedClient *client, RedsStream *stream,
- int mig_target,
- uint32_t *common_caps, int num_common_caps,
- uint32_t *caps, int num_caps,
- SpiceImageCompression image_compression,
- spice_wan_compression_t jpeg_state,
- spice_wan_compression_t zlib_glz_state)
-
-{
- DisplayChannelClient *dcc;
-
- dcc = (DisplayChannelClient*)common_channel_new_client(
- (CommonChannel *)display, sizeof(DisplayChannelClient),
- client, stream, mig_target, TRUE,
- common_caps, num_common_caps,
- caps, num_caps);
- spice_return_val_if_fail(dcc, NULL);
-
- ring_init(&dcc->palette_cache_lru);
- dcc->palette_cache_available = CLIENT_PALETTE_CACHE_SIZE;
- dcc->image_compression = image_compression;
- dcc->jpeg_state = jpeg_state;
- dcc->zlib_glz_state = zlib_glz_state;
- // todo: tune quality according to bandwidth
- dcc->jpeg_quality = 85;
-
- dcc_encoders_init(dcc);
-
- return dcc;
-}
-
-void dcc_add_stream_agent_clip(DisplayChannelClient* dcc, StreamAgent *agent)
-{
- StreamClipItem *item = stream_clip_item_new(dcc, agent);
- int n_rects;
-
- item->clip_type = SPICE_CLIP_TYPE_RECTS;
-
- n_rects = pixman_region32_n_rects(&agent->clip);
- item->rects = spice_malloc_n_m(n_rects, sizeof(SpiceRect), sizeof(SpiceClipRects));
- item->rects->num_rects = n_rects;
- region_ret_rects(&agent->clip, item->rects->rects, n_rects);
-
- red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), (PipeItem *)item);
-}
-
MonitorsConfig* monitors_config_ref(MonitorsConfig *monitors_config)
{
monitors_config->refs++;
@@ -227,82 +180,6 @@ MonitorsConfig* monitors_config_new(QXLHead *heads, ssize_t nheads, ssize_t max)
return mc;
}
-static MonitorsConfigItem *monitors_config_item_new(RedChannel* channel,
- MonitorsConfig *monitors_config)
-{
- MonitorsConfigItem *mci;
-
- mci = (MonitorsConfigItem *)spice_malloc(sizeof(*mci));
- mci->monitors_config = monitors_config;
-
- red_channel_pipe_item_init(channel,
- &mci->pipe_item, PIPE_ITEM_TYPE_MONITORS_CONFIG);
- return mci;
-}
-
-static void red_monitors_config_item_add(DisplayChannelClient *dcc)
-{
- DisplayChannel *dc = DCC_TO_DC(dcc);
- MonitorsConfigItem *mci;
-
- mci = monitors_config_item_new(dcc->common.base.channel,
- monitors_config_ref(dc->monitors_config));
- red_channel_client_pipe_add(&dcc->common.base, &mci->pipe_item);
-}
-
-void dcc_push_monitors_config(DisplayChannelClient *dcc)
-{
- MonitorsConfig *monitors_config = DCC_TO_DC(dcc)->monitors_config;
-
- if (monitors_config == NULL) {
- spice_warning("monitors_config is NULL");
- return;
- }
-
- if (!red_channel_client_test_remote_cap(&dcc->common.base,
- SPICE_DISPLAY_CAP_MONITORS_CONFIG)) {
- return;
- }
- red_monitors_config_item_add(dcc);
- red_channel_client_push(&dcc->common.base);
-}
-
-static SurfaceDestroyItem *surface_destroy_item_new(RedChannel *channel,
- uint32_t surface_id)
-{
- SurfaceDestroyItem *destroy;
-
- destroy = spice_malloc(sizeof(SurfaceDestroyItem));
- destroy->surface_destroy.surface_id = surface_id;
- red_channel_pipe_item_init(channel, &destroy->pipe_item,
- PIPE_ITEM_TYPE_DESTROY_SURFACE);
-
- return destroy;
-}
-
-void dcc_push_destroy_surface(DisplayChannelClient *dcc, uint32_t surface_id)
-{
- DisplayChannel *display;
- RedChannel *channel;
- SurfaceDestroyItem *destroy;
-
- if (!dcc) {
- return;
- }
-
- display = DCC_TO_DC(dcc);
- channel = RED_CHANNEL(display);
-
- if (COMMON_CHANNEL(display)->during_target_migrate ||
- !dcc->surface_client_created[surface_id]) {
- return;
- }
-
- dcc->surface_client_created[surface_id] = FALSE;
- destroy = surface_destroy_item_new(channel, surface_id);
- red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), &destroy->pipe_item);
-}
-
int display_channel_get_streams_timeout(DisplayChannel *display)
{
int timeout = INT_MAX;
@@ -395,7 +272,7 @@ void display_channel_surface_unref(DisplayChannel *display, uint32_t surface_id)
region_destroy(&surface->draw_dirty_region);
surface->context.canvas = NULL;
FOREACH_DCC(display, link, next, dcc) {
- dcc_push_destroy_surface(dcc, surface_id);
+ dcc_destroy_surface(dcc, surface_id);
}
spice_warn_if(!ring_is_empty(&surface->depend_on_me));
@@ -442,7 +319,7 @@ static void streams_update_visible_region(DisplayChannel *display, Drawable *dra
if (region_intersects(&agent->vis_region, &drawable->tree_item.base.rgn)) {
region_exclude(&agent->vis_region, &drawable->tree_item.base.rgn);
region_exclude(&agent->clip, &drawable->tree_item.base.rgn);
- dcc_add_stream_agent_clip(dcc, agent);
+ dcc_stream_agent_clip(dcc, agent);
}
}
}