summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch')
-rw-r--r--gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch b/gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch
new file mode 100644
index 0000000000..370932c7ed
--- /dev/null
+++ b/gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch
@@ -0,0 +1,29 @@
+From 3660acfcbaaca9c66dca5ef09205bd7c1d70b98c Mon Sep 17 00:00:00 2001
+From: Lukas Joeressen <lukas@joeressen.net>
+Date: Sat, 12 Apr 2025 10:42:02 +0200
+Subject: [PATCH] Fix VDAGentMonitorConfig size calculation
+
+The VDAgentMonitorsConfig struct has the VD_AGENT_CONFIG_MONITORS_FLAG_PHYSICAL_SIZE flag that
+indicates if physical monitor sizes are included in the data. If this flag is set there is one
+instance of VDAgentMonitorMM for each monitor following the other data.
+---
+ src/vdagentd/vdagentd.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/vdagentd/vdagentd.c b/src/vdagentd/vdagentd.c
+index 3e59331..27a6f15 100644
+--- a/src/vdagentd/vdagentd.c
++++ b/src/vdagentd/vdagentd.c
+@@ -208,6 +208,9 @@ static void do_client_monitors(VirtioPort *vport, int port_nr,
+ /* Store monitor config to send to agents when they connect */
+ size = sizeof(VDAgentMonitorsConfig) +
+ new_monitors->num_of_monitors * sizeof(VDAgentMonConfig);
++ if (new_monitors->flags & VD_AGENT_CONFIG_MONITORS_FLAG_PHYSICAL_SIZE) {
++ size += new_monitors->num_of_monitors * sizeof(VDAgentMonitorMM);
++ }
+ if (message_header->size != size) {
+ syslog(LOG_ERR, "invalid message size for VDAgentMonitorsConfig");
+ return;
+--
+GitLab
+