[Spice-devel] [PATCH spice-server 07/10] Propagate running property from RedWorker to DisplayChannel
Frediano Ziglio
fziglio at redhat.com
Wed Mar 20 09:59:16 UTC 2019
This is a preparatory patch to allows DisplayChannel to check
if device is running.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
server/display-channel-private.h | 1 +
server/display-channel.c | 8 ++++++++
server/display-channel.h | 2 ++
server/red-worker.c | 2 ++
4 files changed, 13 insertions(+)
diff --git a/server/display-channel-private.h b/server/display-channel-private.h
index 58179531..067c6418 100644
--- a/server/display-channel-private.h
+++ b/server/display-channel-private.h
@@ -89,6 +89,7 @@ struct DisplayChannelPrivate
uint32_t renderer;
int enable_jpeg;
int enable_zlib_glz_wrap;
+ bool running;
/* A ring of pending drawables for this DisplayChannel, regardless of which
* surface they're associated with. This list is mainly used to flush older
diff --git a/server/display-channel.c b/server/display-channel.c
index cb052bfc..49a2bd48 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -2540,3 +2540,11 @@ void display_channel_debug_oom(DisplayChannel *display, const char *msg)
ring_get_length(&display->priv->current_list),
red_channel_sum_pipes_size(channel));
}
+
+void display_channel_set_running(DisplayChannel *display, bool running)
+{
+ if (running == display->priv->running) {
+ return;
+ }
+ display->priv->running = running;
+}
diff --git a/server/display-channel.h b/server/display-channel.h
index f64da0bd..bdf2f059 100644
--- a/server/display-channel.h
+++ b/server/display-channel.h
@@ -158,6 +158,8 @@ void display_channel_reset_image_cache(DisplayChannel *self);
void display_channel_debug_oom(DisplayChannel *display, const char *msg);
+void display_channel_set_running(DisplayChannel *display, bool running);
+
G_END_DECLS
#endif /* DISPLAY_CHANNEL_H_ */
diff --git a/server/red-worker.c b/server/red-worker.c
index 07329b17..c9c47133 100644
--- a/server/red-worker.c
+++ b/server/red-worker.c
@@ -588,6 +588,7 @@ static void handle_dev_stop(void *opaque, void *payload)
spice_assert(worker->running);
worker->running = FALSE;
+ display_channel_set_running(worker->display_channel, false);
display_channel_free_glz_drawables(worker->display_channel);
display_channel_flush_all_surfaces(worker->display_channel);
@@ -616,6 +617,7 @@ static void handle_dev_start(void *opaque, void *payload)
display_channel_wait_for_migrate_data(worker->display_channel);
}
worker->running = TRUE;
+ display_channel_set_running(worker->display_channel, true);
worker->event_timeout = 0;
guest_set_client_capabilities(worker);
}
--
2.20.1
More information about the Spice-devel
mailing list