Hi, Spice now supports multiple arbitrary-sized monitors per display channel. The client has to learn how to handle the new events in order to create, to show, and to manage the displays appropriately. The feature is currently being merged in the various projects, to test it you'll need the following projects update with monitor config support: spice-server, qemu, spice-gtk, qxl driver and vdagent. Changes since v1, after Christophe review: - splitted into more smaller patches - bumped to glib 2.22 and removed fallback code - added g_clear_pointer() virt-glib-compat.h fallback - renamed s/cmain/main_channel, s/c/monitor, s/enabled/enable - removed the display->dirty idle flag change, it was borked - more comments and spelling fixes - monitor count/max range is now checked by spice-gtk cheers Marc-André Lureau (25): build: allow building with newer glibc-headers and -O0 spice: improve fullscreen=auto-conf spice: disconnect signal handlers when either object is destroyed build: generate enums type boilerplate Destroy dialog immediately after run Turn display:show-hint into flags type Run-time check values before doing bad computation Mark a menu string as translatable Rebuild display menu when a window is added or removed Use virt_viewer_connect_object() for display Add a DISABLED display hint Prevent from adding the same display several time in the session Number display starting from 1 Use SpiceDisplay:ready property instead of channel mark Bump glib > 2.22, add compat file Hook up handling of Monitors Add virt_viewer_window_get_display() Add VirtViewerDisplay::selectable property spice: factor out main channel lookup code Make the display submenu insensitive if display can't be selected Add VirtViewerSession::session-display-updated Simplify display flag handling vnc: when session is disconnected, make the display as non-ready Make status widget visible immediately Show status page by default if display not ready acinclude.m4 | 9 ++- configure.ac | 7 ++- src/Makefile.am | 24 +++++++- src/virt-glib-compat.h | 56 +++++++++++++++++ src/virt-viewer-app.c | 53 ++++++++++++---- src/virt-viewer-display-spice.c | 123 ++++++++++++++++++++++++------------- src/virt-viewer-display-spice.h | 2 +- src/virt-viewer-display.c | 70 +++++++++++++++++---- src/virt-viewer-display.h | 15 +++-- src/virt-viewer-enums.c.etemplate | 60 ++++++++++++++++++ src/virt-viewer-enums.h.etemplate | 41 +++++++++++++ src/virt-viewer-notebook.c | 1 + src/virt-viewer-session-spice.c | 111 ++++++++++++++++++++++++++++----- src/virt-viewer-session-vnc.c | 8 +-- src/virt-viewer-session.c | 13 ++++ src/virt-viewer-session.h | 1 + src/virt-viewer-util.c | 117 +++++++++++++++++++++++++++++++++++ src/virt-viewer-util.h | 6 ++ src/virt-viewer-window.c | 67 +++++++++++++++----- src/virt-viewer-window.h | 1 + 20 files changed, 672 insertions(+), 113 deletions(-) create mode 100644 src/virt-glib-compat.h create mode 100644 src/virt-viewer-enums.c.etemplate create mode 100644 src/virt-viewer-enums.h.etemplate -- 1.7.10.4