File ioemu-vnc-resize.patch of Package xen.openSUSE_Leap_42.3_Update

Index: xen-4.9.0-testing/tools/qemu-xen-traditional-dir-remote/vnc.c
===================================================================
--- xen-4.9.0-testing.orig/tools/qemu-xen-traditional-dir-remote/vnc.c
+++ xen-4.9.0-testing/tools/qemu-xen-traditional-dir-remote/vnc.c
@@ -1727,6 +1727,25 @@ static int protocol_client_msg(VncState
 	}
 
 	set_encodings(vs, (int32_t *)(data + 4), limit);
+
+    /*
+     * The initialization of a VNC connection can race with xenfb changing
+     * the resolution. This happens when the VNC connection is already
+     * established, but the client has not yet advertised has_resize, so it
+     * won't get notified of the switch.
+     *
+     * Therefore we resend the resolution as soon as the client has sent its
+     * encodings.
+     */
+     if (vs->has_resize) {
+         /* Resize the VNC window */
+         vnc_write_u8(vs, 0);  /* msg id */
+         vnc_write_u8(vs, 0);
+         vnc_write_u16(vs, 1); /* number of rects */
+         vnc_framebuffer_update(vs, 0, 0, vs->serverds.width, vs->serverds.height, -223);
+
+         vnc_flush(vs);
+     }
 	break;
     case 3:
 	if (len == 1)
openSUSE Build Service is sponsored by