summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/red_dispatcher.c22
-rw-r--r--server/red_dispatcher.h2
-rw-r--r--server/reds.c2
-rw-r--r--server/spice.h6
4 files changed, 30 insertions, 2 deletions
diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c
index 8d9c073a..69d4f0a1 100644
--- a/server/red_dispatcher.c
+++ b/server/red_dispatcher.c
@@ -762,6 +762,28 @@ void red_dispatcher_set_mouse_mode(uint32_t mode)
}
}
+void red_dispatcher_on_vm_stop(void)
+{
+ RedDispatcher *now = dispatchers;
+
+ spice_debug(NULL);
+ while (now) {
+ red_dispatcher_stop(now);
+ now = now->next;
+ }
+}
+
+void red_dispatcher_on_vm_start(void)
+{
+ RedDispatcher *now = dispatchers;
+
+ spice_debug(NULL);
+ while (now) {
+ red_dispatcher_start(now);
+ now = now->next;
+ }
+}
+
int red_dispatcher_count(void)
{
RedDispatcher *now = dispatchers;
diff --git a/server/red_dispatcher.h b/server/red_dispatcher.h
index 98f8ceaf..7e9ffe68 100644
--- a/server/red_dispatcher.h
+++ b/server/red_dispatcher.h
@@ -27,6 +27,8 @@ void red_dispatcher_set_mm_time(uint32_t);
void red_dispatcher_on_ic_change(void);
void red_dispatcher_on_sv_change(void);
void red_dispatcher_set_mouse_mode(uint32_t mode);
+void red_dispatcher_on_vm_stop(void);
+void red_dispatcher_on_vm_start(void);
int red_dispatcher_count(void);
int red_dispatcher_add_renderer(const char *name);
uint32_t red_dispatcher_qxl_ram_size(void);
diff --git a/server/reds.c b/server/reds.c
index b0c609f6..416dff40 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -4041,6 +4041,7 @@ SPICE_GNUC_VISIBLE void spice_server_vm_start(SpiceServer *s)
st_item = SPICE_CONTAINEROF(item, SpiceCharDeviceStateItem, link);
spice_char_device_start(st_item->st);
}
+ red_dispatcher_on_vm_start();
}
SPICE_GNUC_VISIBLE void spice_server_vm_stop(SpiceServer *s)
@@ -4055,6 +4056,7 @@ SPICE_GNUC_VISIBLE void spice_server_vm_stop(SpiceServer *s)
st_item = SPICE_CONTAINEROF(item, SpiceCharDeviceStateItem, link);
spice_char_device_stop(st_item->st);
}
+ red_dispatcher_on_vm_stop();
}
ssize_t reds_stream_read(RedsStream *s, void *buf, size_t nbyte)
diff --git a/server/spice.h b/server/spice.h
index 5f82ed5a..fb51a471 100644
--- a/server/spice.h
+++ b/server/spice.h
@@ -134,8 +134,10 @@ struct QXLWorker {
void spice_qxl_wakeup(QXLInstance *instance);
void spice_qxl_oom(QXLInstance *instance);
-void spice_qxl_start(QXLInstance *instance);
-void spice_qxl_stop(QXLInstance *instance);
+void spice_qxl_start(QXLInstance *instance); /* deprecated since 0.11.2
+ spice_server_vm_start replaces it */
+void spice_qxl_stop(QXLInstance *instance); /* deprecated since 0.11.2
+ spice_server_vm_stop replaces it */
void spice_qxl_update_area(QXLInstance *instance, uint32_t surface_id,
struct QXLRect *area, struct QXLRect *dirty_rects,
uint32_t num_dirty_rects, uint32_t clear_dirty_region);