Hello community, here is the log from the commit of package virt-viewer for openSUSE:Factory checked in at Tue Sep 27 16:06:58 CEST 2011.
-------- --- virt-viewer/virt-viewer.changes 2011-07-28 20:51:00.000000000 +0200 +++ /mounts/work_src_done/STABLE/virt-viewer/virt-viewer.changes 2011-09-26 19:58:56.000000000 +0200 @@ -1,0 +2,21 @@ +Mon Sep 26 11:50:07 MDT 2011 - carn...@novell.com + +- Update to virt-viewer version 0.4.1 + + Remove bogus use of AM_GLIB_GNU_GETTEXT macro to try to facilitate BSD builds + + Support multiple monitors with SPICE and QXL drivers + + Don't hardcode SSH port to 22 when tunnelling + + Require SPICE-GTK >= 0.6 + + Hide menu bar when going fullscreen + + Support building against GTK2 or GTK3 + + Convert from Glade to GtkBuilder + + Honour 'listen' attribute from <graphics> XML when connecting + + Fix reconnection after authentication failure + + Make --verbose flag actually do something + + Enable scaling with SPICE to match VNC behaviour + + Rewrite widget resizing code to (try to) be more reliable + + Fill extra space outside guest display with black + + Fix (null) in title bar while not connected + + Fix multiple memory leaks + + Fix reconnecting to display with SPICE + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- virt-viewer-0.3.1.tar.gz virtview-reconnect-fix.patch vnc-listen.patch New: ---- virt-viewer-0.4.1.tar.gz virtview-ff-callbacks-fix.patch virtview-fullscreen-fix.patch virtview-null-print-fix.patch virtview-sshport-fix.patch virtview-sshport-numbers-fix.patch virtview-sshport0-fix.patch virtview-ui-lookup-fix.patch virtview-wildcard-hostname-fix.patch virtview-window-title-fix.patch virtview-window-zoom-level-fix.patch virtview-xmlparseuri-fix.patch virtview-zoom-level-fix.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ virt-viewer.spec ++++++ --- /var/tmp/diff_new_pack.xNoCvU/_old 2011-09-27 16:06:52.000000000 +0200 +++ /var/tmp/diff_new_pack.xNoCvU/_new 2011-09-27 16:06:52.000000000 +0200 @@ -18,29 +18,38 @@ Name: virt-viewer -Version: 0.3.1 -Release: 5 +Version: 0.4.1 +Release: 1 Summary: Virtual Machine Viewer Group: System/Monitoring License: GPLv2+ Url: http://www.virt-manager.org BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source0: virt-viewer-0.3.1.tar.gz -Patch0: virtview-reconnect-fix.patch -Patch10: netcat.diff -Patch11: vnc-listen.patch -Patch12: windows-keycombo.patch -Patch13: netware-keycombo.patch -Patch14: glade-keycombo.patch -Patch15: report-error.patch +Source0: virt-viewer-0.4.1.tar.gz +Patch1: virtview-fullscreen-fix.patch +Patch2: virtview-ui-lookup-fix.patch +Patch3: virtview-xmlparseuri-fix.patch +Patch4: virtview-sshport-fix.patch +Patch5: virtview-sshport0-fix.patch +Patch6: virtview-sshport-numbers-fix.patch +Patch7: virtview-null-print-fix.patch +Patch8: virtview-ff-callbacks-fix.patch +Patch9: virtview-zoom-level-fix.patch +Patch10: virtview-window-title-fix.patch +Patch11: virtview-window-zoom-level-fix.patch +Patch12: virtview-wildcard-hostname-fix.patch +Patch20: netcat.diff +Patch21: windows-keycombo.patch +Patch22: netware-keycombo.patch +Patch23: glade-keycombo.patch +Patch24: report-error.patch BuildRequires: gtk2-devel BuildRequires: libvirt-devel >= 0.6.0 BuildRequires: libxml2-devel %if %suse_version > 1140 BuildRequires: gtk-vnc2-devel -%else -BuildRequires: gtk-vnc-devel >= 0.3.8 %endif +BuildRequires: gtk-vnc-devel >= 0.3.8 BuildRequires: libglade2-devel %if %suse_version > 1130 BuildRequires: libpixman-1-0-devel @@ -50,6 +59,7 @@ BuildRequires: intltool # Our build requirements BuildRequires: xen-devel +BuildRequires: vim Requires: netcat ExclusiveArch: %ix86 x86_64 @@ -66,15 +76,26 @@ %prep %setup -q -%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 %patch10 -p1 %patch11 -p1 %patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 %build +echo "suse_version = %suse_version" %configure GTKVNC_CFLAGS=-I/usr/include/gtk-vnc-1.0 GTKVNC_LIBS=-lgtk-vnc-1.0 make %{?_smp_mflags} @@ -93,8 +114,8 @@ %{_mandir}/man1/%{name}* %dir %{_datadir}/%{name} %dir %{_datadir}/%{name}/ui -/usr/share/virt-viewer/ui/about.glade -/usr/share/virt-viewer/ui/auth.glade -/usr/share/virt-viewer/ui/viewer.glade +/usr/share/virt-viewer/ui/virt-viewer-about.xml +/usr/share/virt-viewer/ui/virt-viewer-auth.xml +/usr/share/virt-viewer/ui/virt-viewer.xml %changelog ++++++ glade-keycombo.patch ++++++ --- /var/tmp/diff_new_pack.xNoCvU/_old 2011-09-27 16:06:52.000000000 +0200 +++ /var/tmp/diff_new_pack.xNoCvU/_new 2011-09-27 16:06:52.000000000 +0200 @@ -1,102 +1,121 @@ -Index: virt-viewer-0.3.1/src/viewer.glade +Index: virt-viewer-0.4.1/src/virt-viewer.xml =================================================================== ---- virt-viewer-0.3.1.orig/src/viewer.glade -+++ virt-viewer-0.3.1/src/viewer.glade -@@ -145,11 +145,88 @@ - </widget> +--- virt-viewer-0.4.1.orig/src/virt-viewer.xml ++++ virt-viewer-0.4.1/src/virt-viewer.xml +@@ -191,12 +191,107 @@ + </object> </child> <child> -+ <widget class="GtkMenuItem" id="menu-send-css"> ++ <object class="GtkMenuItem" id="menu-send-css"> + <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="use_action_appearance">False</property> + <property name="label" translatable="yes">Ctrl+Scroll+Scr_oll</property> + <property name="use_underline">True</property> -+ <signal name="activate" handler="viewer_menu_send" object="css"/> -+ </widget> ++ <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> ++ </object> + </child> + <child> - <widget class="GtkSeparatorMenuItem" id="separatormenuitem2"> + <object class="GtkSeparatorMenuItem" id="separatormenuitem2"> <property name="visible">True</property> - </widget> + <property name="can_focus">False</property> + </object> </child> <child> -+ <widget class="GtkMenuItem" id="menu-send-f8"> -+ <property name="visible">True</property> -+ <property name="label" translatable="yes">_F8</property> -+ <property name="use_underline">True</property> -+ <signal name="activate" handler="viewer_menu_send" object="f8"/> -+ </widget> -+ </child> -+ <child> -+ <widget class="GtkMenuItem" id="menu-send-f10"> -+ <property name="visible">True</property> -+ <property name="label" translatable="yes">F1_0</property> -+ <property name="use_underline">True</property> -+ <signal name="activate" handler="viewer_menu_send" object="f10"/> -+ </widget> -+ </child> -+ <child> -+ <widget class="GtkMenuItem" id="menu-send-af10"> -+ <property name="visible">True</property> -+ <property name="label" translatable="yes">A_lt+F10</property> -+ <property name="use_underline">True</property> -+ <signal name="activate" handler="viewer_menu_send" object="af10"/> -+ </widget> -+ </child> -+ <child> -+ <widget class="GtkMenuItem" id="menu-send-atab"> -+ <property name="visible">True</property> -+ <property name="label" translatable="yes">Alt+_Tab</property> -+ <property name="use_underline">True</property> -+ <signal name="activate" handler="viewer_menu_send" object="atab"/> -+ </widget> -+ </child> -+ <child> -+ <widget class="GtkMenuItem" id="menu-send-aesc"> -+ <property name="visible">True</property> -+ <property name="label" translatable="yes">_Alt+Esc</property> -+ <property name="use_underline">True</property> -+ <signal name="activate" handler="viewer_menu_send" object="aesc"/> -+ </widget> -+ </child> -+ <child> -+ <widget class="GtkMenuItem" id="menu-send-cesc"> -+ <property name="visible">True</property> -+ <property name="label" translatable="yes">_Ctrl+Esc</property> -+ <property name="use_underline">True</property> -+ <signal name="activate" handler="viewer_menu_send" object="cesc"/> -+ </widget> -+ </child> -+ <child> -+ <widget class="GtkMenuItem" id="menu-send-caesc"> -+ <property name="visible">True</property> -+ <property name="label" translatable="yes">Ctrl+Alt+_Esc</property> -+ <property name="use_underline">True</property> -+ <signal name="activate" handler="viewer_menu_send" object="caesc"/> -+ </widget> -+ </child> -+ <child> -+ <widget class="GtkMenuItem" id="menu-send-assesc"> -+ <property name="visible">True</property> -+ <property name="label" translatable="yes">Alt+Shift+Sh_ift+Esc</property> -+ <property name="use_underline">True</property> -+ <signal name="activate" handler="viewer_menu_send" object="assesc"/> -+ </widget> -+ </child> -+ <child> -+ <widget class="GtkSeparatorMenuItem" id="separatormenuitem3"> -+ <property name="visible">True</property> -+ </widget> -+ </child> -+ <child> - <widget class="GtkMenuItem" id="menu-send-caf1"> ++ <object class="GtkMenuItem" id="menu-send-f8"> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="use_action_appearance">False</property> ++ <property name="label" translatable="yes">_F8</property> ++ <property name="use_underline">True</property> ++ <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> ++ </object> ++ </child> ++ <child> ++ <object class="GtkMenuItem" id="menu-send-f10"> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="use_action_appearance">False</property> ++ <property name="label" translatable="yes">F1_0</property> ++ <property name="use_underline">True</property> ++ <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> ++ </object> ++ </child> ++ <child> ++ <object class="GtkMenuItem" id="menu-send-af10"> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="use_action_appearance">False</property> ++ <property name="label" translatable="yes">A_lt+F10</property> ++ <property name="use_underline">True</property> ++ <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> ++ </object> ++ </child> ++ <child> ++ <object class="GtkMenuItem" id="menu-send-atab"> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="use_action_appearance">False</property> ++ <property name="label" translatable="yes">Alt+_Tab</property> ++ <property name="use_underline">True</property> ++ <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> ++ </object> ++ </child> ++ <child> ++ <object class="GtkMenuItem" id="menu-send-aesc"> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="use_action_appearance">False</property> ++ <property name="label" translatable="yes">_Alt+Esc</property> ++ <property name="use_underline">True</property> ++ <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> ++ </object> ++ </child> ++ <child> ++ <object class="GtkMenuItem" id="menu-send-cesc"> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="use_action_appearance">False</property> ++ <property name="label" translatable="yes">_Ctrl+Esc</property> ++ <property name="use_underline">True</property> ++ <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> ++ </object> ++ </child> ++ <child> ++ <object class="GtkMenuItem" id="menu-send-caesc"> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="use_action_appearance">False</property> ++ <property name="label" translatable="yes">Ctrl+Alt+_Esc</property> ++ <property name="use_underline">True</property> ++ <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> ++ </object> ++ </child> ++ <child> ++ <object class="GtkMenuItem" id="menu-send-assesc"> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="use_action_appearance">False</property> ++ <property name="label" translatable="yes">Alt+Shift+Sh_ift+Esc</property> ++ <property name="use_underline">True</property> ++ <signal name="activate" handler="virt_viewer_window_menu_send" swapped="no"/> ++ </object> ++ </child> ++ <child> ++ <object class="GtkSeparatorMenuItem" id="separatormenuitem3"> ++ <property name="visible">True</property> ++ </object> ++ </child> ++ <child> + <object class="GtkMenuItem" id="menu-send-caf1"> <property name="visible">True</property> - <property name="label" translatable="yes">Ctrl+Alt+F_1</property> -@@ -246,7 +323,7 @@ - </widget> + <property name="can_focus">False</property> +@@ -317,7 +412,7 @@ + </object> </child> <child> -- <widget class="GtkSeparatorMenuItem" id="separatormenuitem3"> -+ <widget class="GtkSeparatorMenuItem" id="separatormenuitem4"> +- <object class="GtkSeparatorMenuItem" id="separatormenuitem3"> ++ <object class="GtkSeparatorMenuItem" id="separatormenuitem5"> <property name="visible">True</property> - </widget> - </child> + <property name="can_focus">False</property> + </object> ++++++ netcat.diff ++++++ --- /var/tmp/diff_new_pack.xNoCvU/_old 2011-09-27 16:06:52.000000000 +0200 +++ /var/tmp/diff_new_pack.xNoCvU/_new 2011-09-27 16:06:52.000000000 +0200 @@ -1,13 +1,13 @@ -Index: virt-viewer-0.3.1/src/viewer.c +Index: virt-viewer-0.4.1/src/virt-viewer-app.c =================================================================== ---- virt-viewer-0.3.1.orig/src/viewer.c -+++ virt-viewer-0.3.1/src/viewer.c -@@ -741,7 +741,7 @@ static int viewer_open_tunnel_ssh(const +--- virt-viewer-0.4.1.orig/src/virt-viewer-app.c ++++ virt-viewer-0.4.1/src/virt-viewer-app.c +@@ -331,7 +331,7 @@ virt_viewer_app_open_tunnel_ssh(const ch cmd[n++] = sshuser; } cmd[n++] = sshhost; - cmd[n++] = "nc"; + cmd[n++] = "netcat"; if (port) { - cmd[n++] = "localhost"; + cmd[n++] = host; cmd[n++] = port; ++++++ netware-keycombo.patch ++++++ --- /var/tmp/diff_new_pack.xNoCvU/_old 2011-09-27 16:06:52.000000000 +0200 +++ /var/tmp/diff_new_pack.xNoCvU/_new 2011-09-27 16:06:52.000000000 +0200 @@ -1,35 +1,35 @@ -Index: virt-viewer-0.3.1/src/viewer.c +Index: virt-viewer-0.4.1/src/virt-viewer-window.c =================================================================== ---- virt-viewer-0.3.1.orig/src/viewer.c -+++ virt-viewer-0.3.1/src/viewer.c -@@ -63,7 +63,7 @@ static const char * const menuNames[LAST - }; - +--- virt-viewer-0.4.1.orig/src/virt-viewer-window.c ++++ virt-viewer-0.4.1/src/virt-viewer-window.c +@@ -502,7 +502,7 @@ virt_viewer_window_enter_fullscreen(Virt + #endif + } -#define MAX_KEY_COMBO 3 +#define MAX_KEY_COMBO 4 struct keyComboDef { guint keys[MAX_KEY_COMBO]; guint nkeys; -@@ -73,7 +73,16 @@ struct keyComboDef { +@@ -512,7 +512,16 @@ struct keyComboDef { static const struct keyComboDef keyCombos[] = { { { GDK_Control_L, GDK_Alt_L, GDK_Delete }, 3, "Ctrl+Alt+_Del"}, { { GDK_Control_L, GDK_Alt_L, GDK_BackSpace }, 3, "Ctrl+Alt+_Backspace"}, -- { { GDK_Control_R, GDK_Scroll_Lock, GDK_Scroll_Lock }, 3, "Ctrl+Scroll+Scroll"}, -+ { { GDK_Control_R, GDK_Scroll_Lock, GDK_Scroll_Lock }, 3, "Ctrl+Scroll+Scr_oll"}, -+ { {}, 0, "" }, -+ { { GDK_F8 }, 1, "_F8"}, -+ { { GDK_F10 }, 1, "F1_0"}, -+ { { GDK_Alt_L, GDK_F10 }, 2, "A_lt+F10"}, -+ { { GDK_Alt_L, GDK_Tab }, 2, "Alt+_Tab"}, -+ { { GDK_Alt_L, GDK_Escape }, 2, "_Alt+Esc"}, -+ { { GDK_Control_L, GDK_Escape }, 2, "_Ctrl+Esc"}, -+ { { GDK_Control_L, GDK_Alt_L, GDK_Escape }, 3, "Ctrl+Alt+_Esc"}, -+ { { GDK_Alt_R, GDK_Shift_R, GDK_Shift_L, GDK_Escape }, 4, "Alt+Shift+Sh_ift+Esc"}, +- { { GDK_Control_R, GDK_Scroll_Lock, GDK_Scroll_Lock }, 3, "Ctrl+Scroll+Scroll"}, ++ { { GDK_Control_R, GDK_Scroll_Lock, GDK_Scroll_Lock }, 3, "Ctrl+Scroll+Scr_oll"}, ++ { {}, 0, "" }, ++ { { GDK_F8 }, 1, "_F8"}, ++ { { GDK_F10 }, 1, "F1_0"}, ++ { { GDK_Alt_L, GDK_F10 }, 2, "A_lt+F10"}, ++ { { GDK_Alt_L, GDK_Tab }, 2, "Alt+_Tab"}, ++ { { GDK_Alt_L, GDK_Escape }, 2, "_Alt+Esc"}, ++ { { GDK_Control_L, GDK_Escape }, 2, "_Ctrl+Esc"}, ++ { { GDK_Control_L, GDK_Alt_L, GDK_Escape }, 3, "Ctrl+Alt+_Esc"}, ++ { { GDK_Alt_R, GDK_Shift_R, GDK_Shift_L, GDK_Escape }, 4, "Alt+Shift+Sh_ift+Esc"}, { {}, 0, "" }, { { GDK_Control_L, GDK_Alt_L, GDK_F1 }, 3, "Ctrl+Alt+F_1"}, { { GDK_Control_L, GDK_Alt_L, GDK_F2 }, 3, "Ctrl+Alt+F_2"}, -@@ -83,10 +92,10 @@ static const struct keyComboDef keyCombo +@@ -522,10 +531,10 @@ static const struct keyComboDef keyCombo { { GDK_Control_L, GDK_Alt_L, GDK_F6 }, 3, "Ctrl+Alt+F_6"}, { { GDK_Control_L, GDK_Alt_L, GDK_F7 }, 3, "Ctrl+Alt+F_7"}, { { GDK_Control_L, GDK_Alt_L, GDK_F8 }, 3, "Ctrl+Alt+F_8"}, ++++++ report-error.patch ++++++ --- /var/tmp/diff_new_pack.xNoCvU/_old 2011-09-27 16:06:52.000000000 +0200 +++ /var/tmp/diff_new_pack.xNoCvU/_new 2011-09-27 16:06:52.000000000 +0200 @@ -1,12 +1,12 @@ -Index: virt-viewer-0.3.1/src/viewer.c +Index: virt-viewer-0.4.1/src/virt-viewer.c =================================================================== ---- virt-viewer-0.3.1.orig/src/viewer.c -+++ virt-viewer-0.3.1/src/viewer.c -@@ -1118,6 +1118,7 @@ static int viewer_initial_connect(VirtVi +--- virt-viewer-0.4.1.orig/src/virt-viewer.c ++++ virt-viewer-0.4.1/src/virt-viewer.c +@@ -421,6 +421,7 @@ virt_viewer_initial_connect(VirtViewerAp } else { - viewer_simple_message_dialog(viewer->window, _("Cannot find guest domain %s"), - viewer->domkey); -+ fprintf(stderr, "Cannot find guest %s\n", viewer->domkey); - DEBUG_LOG("Cannot find guest %s", viewer->domkey); + virt_viewer_app_simple_message_dialog(app, _("Cannot find guest domain %s"), + priv->domkey); ++ fprintf(stderr, "Cannot find guest %s\n", priv->domkey); + DEBUG_LOG("Cannot find guest %s", priv->domkey); goto cleanup; } ++++++ virt-viewer-0.3.1.tar.gz -> virt-viewer-0.4.1.tar.gz ++++++ ++++ 26396 lines of diff (skipped) ++++++ virtview-ff-callbacks-fix.patch ++++++ Subject: ff callbacks must be invoked from a clean stack From: Guido Günther a...@sigxcpu.org Tue Aug 16 08:36:13 2011 -0700 Date: Tue Aug 16 08:36:18 2011 -0700: Git: f3714e36625168fbd06b63e4b9979e7ea8258712 If 'ff' callbacks are invoked directly from the remove callback they will likely deadlock in libvirt. They must be invoked from a clean stack, so switch to using a glib idle callback. Index: virt-viewer-0.4.1/src/virt-viewer-events.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-events.c +++ virt-viewer-0.4.1/src/virt-viewer-events.c @@ -160,6 +160,23 @@ virt_viewer_events_update_handle(int wat } } + +static gboolean +virt_viewer_events_cleanup_handle(gpointer user_data) +{ + struct virt_viewer_events_handle *data = user_data; + + DEBUG_LOG("Cleanup of handle %p", data); + g_return_val_if_fail(data != NULL, FALSE); + + if (data->ff) + (data->ff)(data->opaque); + + free(data); + return FALSE; +} + + static int virt_viewer_events_remove_handle(int watch) { @@ -172,13 +189,14 @@ virt_viewer_events_remove_handle(int wat DEBUG_LOG("Remove handle %d %d", watch, data->fd); + if (!data->source) + return -1; + g_source_remove(data->source); data->source = 0; data->events = 0; - if (data->ff) - (data->ff)(data->opaque); - free(data); + g_idle_add(virt_viewer_events_cleanup_handle, data); return 0; } @@ -279,6 +297,23 @@ virt_viewer_events_update_timeout(int ti } } + +static gboolean +virt_viewer_events_cleanup_timeout(gpointer user_data) +{ + struct virt_viewer_events_timeout *data = user_data; + + DEBUG_LOG("Cleanup of timeout %p", data); + g_return_val_if_fail(data != NULL, FALSE); + + if (data->ff) + (data->ff)(data->opaque); + + free(data); + return FALSE; +} + + static int virt_viewer_events_remove_timeout(int timer) { @@ -297,11 +332,7 @@ virt_viewer_events_remove_timeout(int ti g_source_remove(data->source); data->source = 0; - if (data->ff) - (data->ff)(data->opaque); - - free(data); - + g_idle_add(virt_viewer_events_cleanup_timeout, data); return 0; } ++++++ virtview-fullscreen-fix.patch ++++++ Subject: Fix fullscreen should hide taskbar on Windows From: Marc-André Lureau marcandre.lur...@redhat.com Tue Jul 19 21:04:32 2011 +0200 Date: Thu Aug 4 13:31:08 2011 +0100: Git: 80aaff91f9309f2da8a0aa3723b53a493650181e Index: virt-viewer-0.4.1/src/virt-viewer-window.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-window.c +++ virt-viewer-0.4.1/src/virt-viewer-window.c @@ -445,6 +445,9 @@ virt_viewer_window_leave_fullscreen(Virt ViewAutoDrawer_SetActive(VIEW_AUTODRAWER(priv->layout), FALSE); gtk_widget_show(menu); gtk_widget_hide(priv->toolbar); +#ifdef G_OS_WIN32 + gtk_widget_set_size_request(GTK_WIDGET(priv->window), -1, -1); +#endif gtk_window_unfullscreen(GTK_WINDOW(priv->window)); if (priv->before_saved) { @@ -488,6 +491,13 @@ virt_viewer_window_enter_fullscreen(Virt gtk_window_move(GTK_WINDOW(priv->window), x, y); gtk_window_fullscreen(GTK_WINDOW(priv->window)); +#ifdef G_OS_WIN32 + /* on windows, fullscreen doesn't always hide the taskbar + See https://bugzilla.gnome.org/show_bug.cgi?id=652049 */ + gtk_widget_set_size_request(GTK_WIDGET(priv->window), + gdk_screen_width(), + gdk_screen_height()); +#endif } #define MAX_KEY_COMBO 3 ++++++ virtview-null-print-fix.patch ++++++ Subject: Don't print (null) as user From: Guido Günther a...@sigxcpu.org Fri Aug 12 19:50:40 2011 +0200 Date: Sun Aug 14 12:35:52 2011 -0700: Git: e155f7f656dd2bb5f939996be583e908afeec2a8 Index: virt-viewer-0.4.1/src/virt-viewer-app.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-app.c +++ virt-viewer-0.4.1/src/virt-viewer-app.c @@ -647,8 +647,10 @@ virt_viewer_app_activate(VirtViewerApp * if (priv->port) p = g_strdup_printf(":%d", priv->port); - virt_viewer_app_trace(self, "Setting up SSH tunnel via %s@%s%s\n", - priv->user, priv->host, p ? p : ""); + virt_viewer_app_trace(self, "Setting up SSH tunnel via %s%s%s%s\n", + priv->user ? priv->user : "", + priv->user ? "@" : "", + priv->host, p ? p : ""); g_free(p); if ((fd = virt_viewer_app_open_tunnel_ssh(priv->host, priv->port, ++++++ virtview-sshport-fix.patch ++++++ Subject: Fix inverted sshport test that broke SSH tunnelling From: Daniel P. Berrange berra...@redhat.com Fri Aug 12 15:37:51 2011 +0100 Date: Fri Aug 12 15:37:51 2011 +0100: Git: 754011f2bc5696466de5f45c3781c7a0cd961b9a Index: virt-viewer-0.4.1/src/virt-viewer-app.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-app.c +++ virt-viewer-0.4.1/src/virt-viewer-app.c @@ -319,7 +319,7 @@ virt_viewer_app_open_tunnel_ssh(const ch int n = 0; cmd[n++] = "ssh"; - if (!sshport) { + if (sshport) { cmd[n++] = "-p"; sprintf(portstr, "%d", sshport); cmd[n++] = portstr; ++++++ virtview-sshport-numbers-fix.patch ++++++ Subject: Don't print incorrect port numbers From: Guido Günther a...@sigxcpu.org Fri Aug 12 19:50:29 2011 +0200 Date: Sun Aug 14 12:35:52 2011 -0700: Git: 60145f31a6fb2c7331101ba4ee7d25d08dd7eb48 The port isn't 22 when we connect to an alternate port given in .ssh/config. Index: virt-viewer-0.4.1/src/virt-viewer-app.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-app.c +++ virt-viewer-0.4.1/src/virt-viewer-app.c @@ -635,6 +635,8 @@ virt_viewer_app_activate(VirtViewerApp * if (priv->transport && g_strcasecmp(priv->transport, "ssh") == 0 && !priv->direct) { + gchar *p = NULL; + if (priv->gport) { virt_viewer_app_trace(self, "Opening indirect TCP connection to display at %s:%s\n", priv->ghost, priv->gport); @@ -642,8 +644,12 @@ virt_viewer_app_activate(VirtViewerApp * virt_viewer_app_trace(self, "Opening indirect UNIX connection to display at %s\n", priv->unixsock); } - virt_viewer_app_trace(self, "Setting up SSH tunnel via %s@%s:%d\n", - priv->user, priv->host, priv->port ? priv->port : 22); + if (priv->port) + p = g_strdup_printf(":%d", priv->port); + + virt_viewer_app_trace(self, "Setting up SSH tunnel via %s@%s%s\n", + priv->user, priv->host, p ? p : ""); + g_free(p); if ((fd = virt_viewer_app_open_tunnel_ssh(priv->host, priv->port, priv->user, priv->ghost, ++++++ virtview-sshport0-fix.patch ++++++ Subject: Don't hardcode ssh port to 0 From: Guido Günther a...@sigxcpu.org Fri Aug 12 19:50:22 2011 +0200 Date: Sun Aug 14 12:35:52 2011 -0700: Git: 1c00bc2b9541a553c0f6502dadc61eb56edfa355 Many thanks to Luca Capello <l...@pca.it> for debugging this. Index: virt-viewer-0.4.1/src/virt-viewer-app.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-app.c +++ virt-viewer-0.4.1/src/virt-viewer-app.c @@ -1311,7 +1311,7 @@ virt_viewer_app_set_connect_info(VirtVie priv->transport = g_strdup(transport); priv->unixsock = g_strdup(unixsock); priv->user = g_strdup(user); - priv->port = 0; + priv->port = port; virt_viewer_app_update_pretty_address(self); } ++++++ virtview-ui-lookup-fix.patch ++++++ Subject: Lookup UI file correctly, to fix Windows support From: Marc-André Lureau marcandre.lur...@redhat.com Tue Jul 19 19:18:50 2011 +0200 Date: Thu Aug 4 13:32:17 2011 +0100: Git: 1002a220a4e6b7083d0a9bc7dbef64799ae5b496 Index: virt-viewer-0.4.1/src/Makefile.am =================================================================== --- virt-viewer-0.4.1.orig/src/Makefile.am +++ virt-viewer-0.4.1/src/Makefile.am @@ -52,5 +52,4 @@ virt_viewer_CFLAGS = \ @LIBXML2_CFLAGS@ \ @LIBVIRT_CFLAGS@ \ @WARN_CFLAGS@ \ - -DBUILDER_XML_DIR="\"$(builderxmldir)\"" \ -DLOCALE_DIR=\""$(datadir)/locale"\" Index: virt-viewer-0.4.1/src/virt-viewer-util.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-util.c +++ virt-viewer-0.4.1/src/virt-viewer-util.c @@ -42,16 +42,34 @@ GtkBuilder *virt_viewer_util_load_ui(con if (stat(name, &sb) >= 0) { gtk_builder_add_from_file(builder, name, &error); } else { - gchar *path = g_strdup_printf("%s/%s", BUILDER_XML_DIR, name); - gtk_builder_add_from_file(builder, path, &error); - g_free(path); + const gchar * const * dirs = g_get_system_data_dirs(); + g_return_val_if_fail(dirs != NULL, NULL); + + while (dirs[0] != NULL) { + gchar *path = g_build_filename(dirs[0], PACKAGE, "ui", name, NULL); + if (gtk_builder_add_from_file(builder, path, NULL) != 0) { + g_free(path); + break; + } + g_free(path); + dirs++; + } + if (dirs[0] == NULL) + goto failed; } - if (error) + if (error) { g_error("Cannot load UI description %s: %s", name, error->message); + g_clear_error(&error); + goto failed; + } return builder; +failed: + g_error("failed to find UI description file"); + g_object_unref(builder); + return NULL; } int ++++++ virtview-wildcard-hostname-fix.patch ++++++ Subject: Fix hostname when XML gives a wildcard address From: Daniel P. Berrange berra...@redhat.com Mon Sep 19 16:37:57 2011 +0100 Date: Mon Sep 19 16:37:57 2011 +0100: Git: 41703dd4581c064a110ee3b4371920cbc9356613 When the guest XML contains a wildcard address like 0.0.0.0 or ::, we can't directly use connect() on it. Instead we have to use the hostname/IP from the libvirt URI. Index: virt-viewer-0.4.1/src/virt-viewer.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer.c +++ virt-viewer-0.4.1/src/virt-viewer.c @@ -325,6 +325,19 @@ virt_viewer_extract_connect_info(VirtVie goto cleanup; } + /* If the XML listen attribute shows a wildcard address, we need to + * throw that away since you obviously can't 'connect(2)' to that + * from a remote host. Instead we fallback to the hostname used in + * the libvirt URI. This isn't perfect but it is better than nothing + */ + if (strcmp(ghost, "0.0.0.0") == 0 || + strcmp(ghost, "::") == 0) { + DEBUG_LOG("Guest graphics listen '%s' is a wildcard, replacing with '%s'", + ghost, host); + g_free(ghost); + ghost = g_strdup(host); + } + virt_viewer_app_set_connect_info(app, host, ghost, gport, transport, unixsock, user, port); retval = TRUE; ++++++ virtview-window-title-fix.patch ++++++ Subject: Fix setting of window title with domain name From: Daniel P. Berrange berra...@redhat.com Fri Sep 16 10:57:53 2011 +0100 Date: Fri Sep 16 10:57:53 2011 +0100: Git: 46cf6410c11dc8369dcf74283656f4bb0e14be8a Index: virt-viewer-0.4.1/src/virt-viewer-app.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-app.c +++ virt-viewer-0.4.1/src/virt-viewer-app.c @@ -121,6 +121,7 @@ struct _VirtViewerAppPrivate { char *pretty_address; gchar *guest_name; gboolean grabbed; + char *title; }; @@ -135,6 +136,7 @@ enum { PROP_SESSION, PROP_GUEST_NAME, PROP_FULLSCREEN, + PROP_TITLE, }; void @@ -386,6 +388,34 @@ virt_viewer_app_trace(VirtViewerApp *sel } } +static void +virt_viewer_app_set_window_subtitle(VirtViewerApp *app, + VirtViewerWindow *window, + int nth) +{ + gchar *subtitle = app->priv->title ? g_strdup_printf("%s (%d)", app->priv->title, nth + 1) : NULL; + g_object_set(window, "subtitle", subtitle, NULL); + g_free(subtitle); +} + +static void +set_title(gpointer key, + gpointer value, + gpointer user_data) +{ + gint *nth = key; + VirtViewerApp *app = user_data; + VirtViewerWindow *window = value; + virt_viewer_app_set_window_subtitle(app, window, *nth); +} + +static void +virt_viewer_app_set_all_window_subtitles(VirtViewerApp *app) +{ + virt_viewer_app_set_window_subtitle(app, app->priv->main_window, 0); + g_hash_table_foreach(app->priv->windows, set_title, app); +} + static void update_title(gpointer key G_GNUC_UNUSED, gpointer value, gpointer user_data G_GNUC_UNUSED) @@ -426,6 +456,7 @@ virt_viewer_app_set_nth_window(VirtViewe key = g_malloc(sizeof(gint)); *key = nth; g_hash_table_insert(self->priv->windows, key, win); + virt_viewer_app_set_window_subtitle(self, win, nth); } static void @@ -949,6 +980,10 @@ virt_viewer_app_get_property (GObject *o g_value_set_boolean(value, priv->fullscreen); break; + case PROP_TITLE: + g_value_set_string(value, priv->title); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } @@ -981,6 +1016,12 @@ virt_viewer_app_set_property (GObject *o virt_viewer_app_set_fullscreen(self, g_value_get_boolean(value)); break; + case PROP_TITLE: + g_free(priv->title); + priv->title = g_value_dup_string(value); + virt_viewer_app_set_all_window_subtitles(self); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } @@ -1006,6 +1047,7 @@ virt_viewer_app_dispose (GObject *object g_object_unref(priv->container); priv->container = NULL; } + g_free(priv->title); virt_viewer_app_free_connect_info(self); @@ -1134,6 +1176,16 @@ virt_viewer_app_class_init (VirtViewerAp G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property(object_class, + PROP_TITLE, + g_param_spec_string("title", + "Title", + "Title", + "", + G_PARAM_READABLE | + G_PARAM_WRITABLE | + G_PARAM_STATIC_STRINGS)); + } void Index: virt-viewer-0.4.1/src/virt-viewer.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer.c +++ virt-viewer-0.4.1/src/virt-viewer.c @@ -49,7 +49,6 @@ struct _VirtViewerPrivate { char *uri; virConnectPtr conn; char *domkey; - char *domtitle; gboolean withEvents; gboolean waitvm; gboolean reconnect; @@ -414,8 +413,7 @@ virt_viewer_initial_connect(VirtViewerAp } } - free(priv->domtitle); - priv->domtitle = g_strdup(virDomainGetName(dom)); + g_object_set(app, "title", virDomainGetName(dom), NULL); virt_viewer_app_show_status(app, _("Checking guest domain status")); if (virDomainGetInfo(dom, &info) < 0) { ++++++ virtview-window-zoom-level-fix.patch ++++++ Subject: Propagate primary window zoom level to secondary windows From: Daniel P. Berrange berra...@redhat.com Fri Sep 16 11:05:50 2011 +0100 Date: Fri Sep 16 11:07:26 2011 +0100: Git: fe8551efbaa1425e7db4d59e10a25fa94788e949 Ensure that all windows get a default zoom level of 100. Propagate the primary window's zoom level to all secondary windows when initially creating them Index: virt-viewer-0.4.1/src/virt-viewer-app.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-app.c +++ virt-viewer-0.4.1/src/virt-viewer-app.c @@ -477,6 +477,8 @@ virt_viewer_app_window_new(VirtViewerApp "app", self, "container", container, NULL); + if (self->priv->main_window) + virt_viewer_window_set_zoom_level(window, virt_viewer_window_get_zoom_level(self->priv->main_window)); virt_viewer_app_set_nth_window(self, nth, window); w = virt_viewer_window_get_window(window); Index: virt-viewer-0.4.1/src/virt-viewer-window.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-window.c +++ virt-viewer-0.4.1/src/virt-viewer-window.c @@ -310,6 +310,8 @@ virt_viewer_window_init (VirtViewerWindo priv->accel_list = g_slist_append(priv->accel_list, accels->data); g_object_ref(G_OBJECT(accels->data)); } + + priv->zoomlevel = 100; } static void @@ -894,6 +896,12 @@ virt_viewer_window_set_zoom_level(VirtVi self->priv->zoomlevel = zoom_level; } +gint virt_viewer_window_get_zoom_level(VirtViewerWindow *self) +{ + g_return_val_if_fail(VIRT_VIEWER_IS_WINDOW(self), 100); + return self->priv->zoomlevel; +} + GtkMenuItem* virt_viewer_window_get_menu_displays(VirtViewerWindow *self) { Index: virt-viewer-0.4.1/src/virt-viewer-window.h =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-window.h +++ virt-viewer-0.4.1/src/virt-viewer-window.h @@ -65,6 +65,7 @@ VirtViewerNotebook* virt_viewer_window_g void virt_viewer_window_set_display(VirtViewerWindow *self, VirtViewerDisplay *display); void virt_viewer_window_update_title(VirtViewerWindow *self); void virt_viewer_window_set_zoom_level(VirtViewerWindow *self, gint zoom_level); +gint virt_viewer_window_get_zoom_level(VirtViewerWindow *self); void virt_viewer_window_leave_fullscreen(VirtViewerWindow *self); void virt_viewer_window_enter_fullscreen(VirtViewerWindow *self, gboolean move, gint x, gint y); GtkMenuItem *virt_viewer_window_get_menu_displays(VirtViewerWindow *self); ++++++ virtview-xmlparseuri-fix.patch ++++++ Subject: Return if xmlParseURI() failed, instead of crashing From: Marc-André Lureau marcandre.lur...@redhat.com Tue Jul 19 19:32:51 2011 +0200 Date: Thu Aug 4 13:32:25 2011 +0100: Git: f08c5308cacda84ab811b85c3cf37ef59383c8c5 Index: virt-viewer-0.4.1/src/virt-viewer-util.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-util.c +++ virt-viewer-0.4.1/src/virt-viewer-util.c @@ -88,6 +88,8 @@ virt_viewer_util_extract_host(const char uristr = "xen:///"; uri = xmlParseURI(uristr); + g_return_val_if_fail(uri != NULL, 1); + if (host) { if (!uri || !uri->server) *host = g_strdup("localhost"); ++++++ virtview-zoom-level-fix.patch ++++++ Subject: Fix setting of initial zoom level on display From: Daniel P. Berrange berra...@redhat.com Tue Aug 16 09:08:51 2011 -0700 Date: Tue Aug 16 09:08:51 2011 -0700: Git: 8bd178c8a81073c70360ce6af6629ad6bf0e921a Index: virt-viewer-0.4.1/src/virt-viewer-window.c =================================================================== --- virt-viewer-0.4.1.orig/src/virt-viewer-window.c +++ virt-viewer-0.4.1/src/virt-viewer-window.c @@ -865,6 +865,8 @@ virt_viewer_window_set_display(VirtViewe if (display != NULL) { priv->display = g_object_ref(display); + virt_viewer_display_set_zoom_level(VIRT_VIEWER_DISPLAY(priv->display), priv->zoomlevel); + gtk_notebook_append_page(GTK_NOTEBOOK(priv->notebook), GTK_WIDGET(display), NULL); if (gtk_bin_get_child(GTK_BIN(display))) gtk_widget_realize(GTK_WIDGET(gtk_bin_get_child(GTK_BIN(display)))); ++++++ windows-keycombo.patch ++++++ --- /var/tmp/diff_new_pack.xNoCvU/_old 2011-09-27 16:06:53.000000000 +0200 +++ /var/tmp/diff_new_pack.xNoCvU/_new 2011-09-27 16:06:53.000000000 +0200 @@ -1,12 +1,12 @@ -Index: virt-viewer-0.3.1/src/viewer.c +Index: virt-viewer-0.4.1/src/virt-viewer-window.c =================================================================== ---- virt-viewer-0.3.1.orig/src/viewer.c -+++ virt-viewer-0.3.1/src/viewer.c -@@ -73,6 +73,7 @@ struct keyComboDef { +--- virt-viewer-0.4.1.orig/src/virt-viewer-window.c ++++ virt-viewer-0.4.1/src/virt-viewer-window.c +@@ -512,6 +512,7 @@ struct keyComboDef { static const struct keyComboDef keyCombos[] = { { { GDK_Control_L, GDK_Alt_L, GDK_Delete }, 3, "Ctrl+Alt+_Del"}, { { GDK_Control_L, GDK_Alt_L, GDK_BackSpace }, 3, "Ctrl+Alt+_Backspace"}, -+ { { GDK_Control_R, GDK_Scroll_Lock, GDK_Scroll_Lock }, 3, "Ctrl+Scroll+Scroll"}, ++ { { GDK_Control_R, GDK_Scroll_Lock, GDK_Scroll_Lock }, 3, "Ctrl+Scroll+Scroll"}, { {}, 0, "" }, { { GDK_Control_L, GDK_Alt_L, GDK_F1 }, 3, "Ctrl+Alt+F_1"}, { { GDK_Control_L, GDK_Alt_L, GDK_F2 }, 3, "Ctrl+Alt+F_2"}, ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org