[Spice-devel] [PATCH 08/18] worker: display_channel_flush_all_surfaces
Frediano Ziglio
fziglio at redhat.com
Wed Nov 18 08:17:27 PST 2015
From: Marc-André Lureau <marcandre.lureau at gmail.com>
---
server/display-channel.c | 11 +++++++++++
server/display-channel.h | 1 +
server/red_worker.c | 22 +++-------------------
3 files changed, 15 insertions(+), 19 deletions(-)
diff --git a/server/display-channel.c b/server/display-channel.c
index 1702bd6..ce973c5 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -838,3 +838,14 @@ int display_channel_wait_for_migrate_data(DisplayChannel *display)
}
return FALSE;
}
+
+void display_channel_flush_all_surfaces(DisplayChannel *display)
+{
+ int x;
+
+ for (x = 0; x < NUM_SURFACES; ++x) {
+ if (display->surfaces[x].context.canvas) {
+ display_channel_current_flush(display, x);
+ }
+ }
+}
diff --git a/server/display-channel.h b/server/display-channel.h
index 595ced8..afb9ec5 100644
--- a/server/display-channel.h
+++ b/server/display-channel.h
@@ -272,6 +272,7 @@ int display_channel_add_drawable (DisplayCha
void display_channel_current_flush (DisplayChannel *display,
int surface_id);
int display_channel_wait_for_migrate_data (DisplayChannel *display);
+void display_channel_flush_all_surfaces (DisplayChannel *display);
static inline int is_equal_path(SpicePath *path1, SpicePath *path2)
{
diff --git a/server/red_worker.c b/server/red_worker.c
index de9117a..51352a8 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -6204,28 +6204,12 @@ static void handle_dev_destroy_primary_surface_async(void *opaque, void *payload
destroy_primary_surface(worker, surface_id);
}
-static void flush_all_surfaces(DisplayChannel *display)
-{
- int x;
-
- for (x = 0; x < NUM_SURFACES; ++x) {
- if (display->surfaces[x].context.canvas) {
- display_channel_current_flush(display, x);
- }
- }
-}
-
-static void dev_flush_surfaces(RedWorker *worker)
-{
- flush_all_qxl_commands(worker);
- flush_all_surfaces(worker->display_channel);
-}
-
static void handle_dev_flush_surfaces_async(void *opaque, void *payload)
{
RedWorker *worker = opaque;
- dev_flush_surfaces(worker);
+ flush_all_qxl_commands(worker);
+ display_channel_flush_all_surfaces(worker->display_channel);
}
static void handle_dev_stop(void *opaque, void *payload)
@@ -6236,7 +6220,7 @@ static void handle_dev_stop(void *opaque, void *payload)
spice_assert(worker->running);
worker->running = FALSE;
red_display_clear_glz_drawables(worker->display_channel);
- flush_all_surfaces(worker->display_channel);
+ display_channel_flush_all_surfaces(worker->display_channel);
/* todo: when the waiting is expected to take long (slow connection and
* overloaded pipe), don't wait, and in case of migration,
* purge the pipe, send destroy_all_surfaces
--
2.4.3
More information about the Spice-devel
mailing list