summaryrefslogtreecommitdiff
path: root/server/red_dispatcher.c
diff options
context:
space:
mode:
Diffstat (limited to 'server/red_dispatcher.c')
-rw-r--r--server/red_dispatcher.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c
index 6b96a2e8..8d9c073a 100644
--- a/server/red_dispatcher.c
+++ b/server/red_dispatcher.c
@@ -648,6 +648,21 @@ static void red_dispatcher_flush_surfaces_async(RedDispatcher *dispatcher, uint6
dispatcher_send_message(&dispatcher->dispatcher, message, &payload);
}
+static void red_dispatcher_monitors_config_async(RedDispatcher *dispatcher,
+ QXLPHYSICAL monitors_config,
+ int group_id,
+ uint64_t cookie)
+{
+ RedWorkerMessageMonitorsConfigAsync payload;
+ RedWorkerMessage message = RED_WORKER_MESSAGE_MONITORS_CONFIG_ASYNC;
+
+ payload.base.cmd = async_command_alloc(dispatcher, message, cookie);
+ payload.monitors_config = monitors_config;
+ payload.group_id = group_id;
+
+ dispatcher_send_message(&dispatcher->dispatcher, message, &payload);
+}
+
static void red_dispatcher_stop(RedDispatcher *dispatcher)
{
RedWorkerMessageStop payload;
@@ -908,6 +923,13 @@ void spice_qxl_flush_surfaces_async(QXLInstance *instance, uint64_t cookie)
red_dispatcher_flush_surfaces_async(instance->st->dispatcher, cookie);
}
+SPICE_GNUC_VISIBLE
+void spice_qxl_monitors_config_async(QXLInstance *instance, QXLPHYSICAL monitors_config,
+ int group_id, uint64_t cookie)
+{
+ red_dispatcher_monitors_config_async(instance->st->dispatcher, monitors_config, group_id, cookie);
+}
+
void red_dispatcher_async_complete(struct RedDispatcher *dispatcher,
AsyncCommand *async_command)
{
@@ -935,6 +957,8 @@ void red_dispatcher_async_complete(struct RedDispatcher *dispatcher,
break;
case RED_WORKER_MESSAGE_FLUSH_SURFACES_ASYNC:
break;
+ case RED_WORKER_MESSAGE_MONITORS_CONFIG_ASYNC:
+ break;
default:
spice_warning("unexpected message %d", async_command->message);
}
@@ -1054,6 +1078,7 @@ RedDispatcher *red_dispatcher_init(QXLInstance *qxl)
client_cbs.migrate = red_dispatcher_display_migrate;
red_channel_register_client_cbs(display_channel, &client_cbs);
red_channel_set_data(display_channel, red_dispatcher);
+ red_channel_set_cap(display_channel, SPICE_DISPLAY_CAP_MONITORS_CONFIG);
reds_register_channel(display_channel);
}