[Spice-devel] [PATCH spice-server 03/15] Move stream agent manipulation to dcc
Jonathon Jongsma
jjongsma at redhat.com
Fri Oct 20 21:13:08 UTC 2017
Rather than having the DisplayChannel responsible for retrieving the
stream agent from the channel client and then maniuplating it, move that
into the channel client for improved encapsulation.
---
server/dcc.c | 12 ++++++++++++
server/dcc.h | 3 +++
server/display-channel.c | 11 +++--------
3 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/server/dcc.c b/server/dcc.c
index c2fdd8c21..a5f19f163 100644
--- a/server/dcc.c
+++ b/server/dcc.c
@@ -1383,6 +1383,18 @@ bool dcc_handle_migrate_data(DisplayChannelClient *dcc, uint32_t size, void *mes
return TRUE;
}
+void dcc_update_stream_visible_region(DisplayChannelClient *dcc, int stream_id,
+ QRegion *region)
+{
+ StreamAgent *agent = dcc_get_stream_agent(dcc, stream_id);
+
+ if (region_intersects(&agent->vis_region, region)) {
+ region_exclude(&agent->vis_region, region);
+ region_exclude(&agent->clip, region);
+ dcc_stream_agent_clip(dcc, agent);
+ }
+}
+
StreamAgent* dcc_get_stream_agent(DisplayChannelClient *dcc, int stream_id)
{
return &dcc->priv->stream_agents[stream_id];
diff --git a/server/dcc.h b/server/dcc.h
index 4de494571..cc2526090 100644
--- a/server/dcc.h
+++ b/server/dcc.h
@@ -189,6 +189,9 @@ int dcc_compress_image (DisplayCha
int can_lossy,
compress_send_data_t* o_comp_data);
+void dcc_update_stream_visible_region (DisplayChannelClient *dcc,
+ int stream_id,
+ QRegion *region);
StreamAgent * dcc_get_stream_agent (DisplayChannelClient *dcc, int stream_id);
ImageEncoders *dcc_get_encoders(DisplayChannelClient *dcc);
spice_wan_compression_t dcc_get_jpeg_state (DisplayChannelClient *dcc);
diff --git a/server/display-channel.c b/server/display-channel.c
index e91265de5..7fa55f6ab 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -341,7 +341,6 @@ static void streams_update_visible_region(DisplayChannel *display, Drawable *dra
while (item) {
Stream *stream = SPICE_CONTAINEROF(item, Stream, link);
- StreamAgent *agent;
item = ring_next(ring, item);
@@ -350,13 +349,9 @@ static void streams_update_visible_region(DisplayChannel *display, Drawable *dra
}
FOREACH_DCC(display, dcc) {
- agent = dcc_get_stream_agent(dcc, display_channel_get_stream_id(display, stream));
-
- 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_stream_agent_clip(dcc, agent);
- }
+ dcc_update_stream_visible_region(dcc,
+ display_channel_get_stream_id(display, stream),
+ &drawable->tree_item.base.rgn);
}
}
}
--
2.13.6
More information about the Spice-devel
mailing list