Commit 8f95c4053b for qemu.org
commit 8f95c4053b51a5b665abfb628876039455798ff0
Author: Marc-André Lureau <marcandre.lureau@redhat.com>
Date: Mon Mar 16 12:40:16 2026 +0400
ui/vnc: add vnc-system unit, to allow different implementations
The qemu-vnc server will want to signal the XVP requests, let it
have its own implementation.
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
diff --git a/ui/meson.build b/ui/meson.build
index 7b6e867d3a..74151b0503 100644
--- a/ui/meson.build
+++ b/ui/meson.build
@@ -48,7 +48,7 @@ vnc_ss.add(files(
vnc_ss.add(zlib, jpeg, png)
vnc_ss.add(when: sasl, if_true: files('vnc-auth-sasl.c'))
system_ss.add_all(when: [vnc, pixman], if_true: vnc_ss)
-system_ss.add(when: vnc, if_false: files('vnc-stubs.c'))
+system_ss.add(when: vnc, if_true: files('vnc-system.c'), if_false: files('vnc-stubs.c'))
ui_modules = {}
diff --git a/ui/vnc-system.c b/ui/vnc-system.c
new file mode 100644
index 0000000000..0632885f65
--- /dev/null
+++ b/ui/vnc-system.c
@@ -0,0 +1,19 @@
+/*
+ * QEMU VNC display driver
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+#include "qemu/osdep.h"
+
+#include "ui/vnc.h"
+#include "system/runstate.h"
+
+void vnc_action_shutdown(VncState *vs)
+{
+ qemu_system_powerdown_request();
+}
+
+void vnc_action_reset(VncState *vs)
+{
+ qemu_system_reset_request(SHUTDOWN_CAUSE_HOST_QMP_SYSTEM_RESET);
+}
diff --git a/ui/vnc.c b/ui/vnc.c
index ea1579135b..154b07e2e4 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -2522,13 +2522,13 @@ static int protocol_client_msg(VncState *vs, uint8_t *data, size_t len)
switch (action) {
case VNC_XVP_ACTION_SHUTDOWN:
- qemu_system_powerdown_request();
+ vnc_action_shutdown(vs);
break;
case VNC_XVP_ACTION_REBOOT:
send_xvp_message(vs, VNC_XVP_CODE_FAIL);
break;
case VNC_XVP_ACTION_RESET:
- qemu_system_reset_request(SHUTDOWN_CAUSE_HOST_QMP_SYSTEM_RESET);
+ vnc_action_reset(vs);
break;
default:
send_xvp_message(vs, VNC_XVP_CODE_FAIL);
diff --git a/ui/vnc.h b/ui/vnc.h
index d2ebb0f7f4..0b345246c8 100644
--- a/ui/vnc.h
+++ b/ui/vnc.h
@@ -648,4 +648,8 @@ void vnc_server_cut_text_caps(VncState *vs);
void vnc_client_cut_text(VncState *vs, size_t len, uint8_t *text);
void vnc_client_cut_text_ext(VncState *vs, int32_t len, uint32_t flags, uint8_t *data);
+/* XVP events */
+void vnc_action_shutdown(VncState *vs);
+void vnc_action_reset(VncState *vs);
+
#endif /* QEMU_VNC_H */