summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix memory leak on remote-viewer exitChristophe Fergeau2013-04-131-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | When exiting remote-viewer, VirtViewepApp::dispose() calls virt_viewer_app_set_connect_info() with NULL parameters to free all internal fields. However, _set_connect_info() calls virt_viewer_app_update_pretty_address() which will always allocate a new string even if the fields it's using to fill the string are NULL. This commit fixes the leak by checking if the fields have non-NULL values before creating the newly-allocated string. ==24180== 14 bytes in 1 blocks are definitely lost in loss record 540 of 8,671 ==24180== at 0x4A0887C: malloc (vg_replace_malloc.c:270) ==24180== by 0x32D2B0A187: __vasprintf_chk (vasprintf_chk.c:80) ==24180== by 0x32D52845AA: g_vasprintf (stdio2.h:210) ==24180== by 0x32D52640DC: g_strdup_vprintf (gstrfuncs.c:517) ==24180== by 0x32D526417B: g_strdup_printf (gstrfuncs.c:543) ==24180== by 0x4136E6: virt_viewer_app_update_pretty_address (virt-viewer-app.c:1681) ==24180== by 0x414100: virt_viewer_app_set_connect_info (virt-viewer-app.c:1902) ==24180== by 0x4141D0: virt_viewer_app_free_connect_info (virt-viewer-app.c:1910) ==24180== by 0x4127C6: virt_viewer_app_dispose (virt-viewer-app.c:1353) ==24180== by 0x425488: remote_viewer_dispose (remote-viewer.c:131) ==24180== by 0x32D5E14787: g_object_unref (gobject.c:2986) ==24180== by 0x4280AF: main (remote-viewer-main.c:323)
* build-sys: Simplify setting of optional CFLAGS/LDFLAGSChristophe Fergeau2013-04-121-25/+15
| | | | | | | They don't need to be wrapped inside if HAVE_XXX blocks in Makefile.am as when XXX is not available, XXX_CFLAGS and XXX_LIBS will expand to the empty string, and thus we can carry them unconditionally in our app_CFLAGS/app_LDFLAGS variables.
* Be more consistent in #if/#ifdef useChristophe Fergeau2013-04-122-19/+17
| | | | | | | Some of the code is checking for spice-gtk/oVirt availability by using #ifdef HAVE_XXX, and some of the code is using #if HAVE_XXX. As configure.ac only AC_DEFINE() HAVE_XXX when XXX could be found, let's use the #ifdef HAVE_XXX form everywhere
* Add oVirt supportChristophe Fergeau2013-04-122-4/+234
| | | | | | This commit adds support for ovirt:// URIs. It does so by using libgovirt to get the spice/vnc connection information through oVirt xmlrpc API.
* virt-viewer-app: Always allow users to close displays from the displays menuHans de Goede2013-04-051-2/+2
| | | | | | | | | | | | Marking display menu items as non sensitive for shown displays make no sense, since the user can always close them through the window-manager. Having a window for a display shown when the display is not selectable nor ready, can happen when the agent goes away. This happens for example when using a dual monitor config with a Linux guest and then switching to a text console inside the guest. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* Use translations when looking up key combination to sendChristophe Fergeau2013-04-021-15/+15
| | | | | | | | | | | | virt_viewer_window_menu_send() compares the label of the menu item that was clicked on with a list of known labels to know which key combination should be sent to the guest. However, the menu label can be translated, but the table doing the label -> key combination mapping uses untranslated labels. This means the menu item will not send any key combination when clicked if translated. This can be observed with fr_FR where "Ctrl+Alt+_Del" is translated to "Ctrl+Alt+_Suppr".
* win32: maximize when leaving fullscreen the first timeMarc-André Lureau2013-04-021-0/+6
| | | | | | | | On windows, the client window may end up with a non-visible toolbar, and overlapping the windows statusbar. To workaround this, let's maximize the client the first time leaving fullscreen. https://bugzilla.redhat.com/show_bug.cgi?id=916810
* Do not enable extra monitors until they are explicitely enabledMarc-André Lureau2013-03-283-2/+6
|
* Make display menu item sensitive againMarc-André Lureau2013-03-281-2/+1
| | | | | | | | Even if the display has not been explicitely disabled, as long as the display is "selectable" Fix regression introduced with "Do not disable extra client monitors" 3b981d953f270662360e5b0c78183924276a18ed
* Remove gtk_window_present() callMarc-André Lureau2013-03-261-1/+0
| | | | | | | | | | | | | | | | | | gtk_window_present() may forcefully call gdk_window_show(), which will call ShowWindow(). Although gdk call is not supposed to move the window if it's already visible, it does restore the window position on Vista+. For example, a snapped window will be moved back to its previous position. Gtk+ ShowWindow() is currently using SW_SHOWNOACTIVATE, it should probably use SW_SHOWNA instead, but that didn't help anyway for a snapped window. Since virt_viewer_window_show() already ensure the window is visible, I am not sure why gtk_window_present() is there in the first place, so just remove it. https://bugzilla.redhat.com/show_bug.cgi?id=912713
* Add gtk_widget_get_realized() define for old gtk+Marc-André Lureau2013-03-261-0/+6
| | | | Fix build with gtk < 2.20
* window: keep display size when leaving fullscreen for first timeMarc-André Lureau2013-03-261-0/+2
| | | | | | | | | If the application was started in fullscreen, window geometry has not been saved, since the window was not realized. We can unfullscreen and restore 1:1 window to match guest display size with virt_viewer_display_queue_resize() https://bugzilla.redhat.com/show_bug.cgi?id=916810
* window: save window geometry if the window is realizedMarc-André Lureau2013-03-261-6/+5
| | | | | Protect against re-entering fullscreen by moving pre-condition, keey the last know window geometry, since it stays valid.
* window: resize to monitor geometryMarc-André Lureau2013-03-261-7/+7
| | | | This code is potentially bad, we should set size request to the size of the monitor
* display: make a function to queue the dirty display allocation trickMarc-André Lureau2013-03-252-10/+14
|
* app: add get_fullscreen_auto_conf()Marc-André Lureau2013-03-252-1/+10
|
* Reuse existing 'displays' submenu rather than recreating itChristophe Fergeau2013-03-251-4/+32
| | | | | | | | | | | Because of what apparently is a gtk+2 bug , we cannot recreate the submenu every time we need to refresh it, otherwise the application may get frozen with the keyboard and mouse grabbed if gtk_menu_item_set_submenu is called while the menu is displayed. Reusing the same menu every time works around this issue. https://bugzilla.redhat.com/show_bug.cgi?id=922712
* Do not disable extra client monitorsMarc-André Lureau2013-03-231-1/+0
| | | | | | | This allows reconfiguration of extra monitors whenever the agent is back, for example after reboot. https://bugzilla.redhat.com/show_bug.cgi?id=918997
* spice: always send auto-conf on agent connectionMarc-André Lureau2013-03-231-15/+13
| | | | | | | | Restore the auto-conf client monitor configuration whenever the agent is started. This ensures the guest has the expected number of monitors enabled when rebooting in fullscreen. https://bugzilla.redhat.com/show_bug.cgi?id=918997
* virt-viewer-display-spice: Skip monitor info in fullscreen-auto-conf modeHans de Goede2013-03-231-2/+9
| | | | | | | | | When we are in fullscreen-auto-conf virt-viewer-session-spice sends a monitor-info message to the agent with the exact client monitor info, and virt-viewer-display-spice should not override that. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com>
* Forward directly key events to displayMarc-André Lureau2013-03-231-0/+12
| | | | | | | | | | | Even if the display is disabled, we should keep sending key events to guest. It can wake up from sleep for instance. There is a single widget per window, so we can directly send key events there. If the menu is active, it has the grab, so the window doesn't receive those key events. https://bugzilla.redhat.com/show_bug.cgi?id=870710
* virt-viewer-app: Call virt_viewer_app_update_menu_displays on show_hint changeHans de Goede2013-03-211-0/+1
| | | | | | | | | | | | | | | Since the sensitivity of the display menu-check-items depends on show_hint, we need to call virt_viewer_app_update_menu_displays on show_hint change. This fixes the following scenario: 1) Linux guest with upto 4 displays on a single qxl dev 2) Configure it for 2 displays 3) Switch to a text-console in the guest (ie send ctrl+alt+F3) 4) All displays except for disp 1 are now not sensitve in the menu 5) Switch back to X 6) The second display in the view->displays menu is still not sensitive Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* virt-viewer-display: Document difference between nth display and monitorHans de Goede2013-03-211-2/+2
| | | | Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* virt-viewer-window: Don't use priv->display when it is NULLHans de Goede2013-03-211-1/+5
| | | | | | | | Add some missing checks for not having a display. Note that where functions should not be called (ie menu items should be disabled) I've used g_return_if_fail. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* virt-viewer-window: Store the monitor locallyHans de Goede2013-03-211-4/+9
| | | | | | | | | | | | | | | | | | | | With commit 81ed9d13 "virt_viewer_window_enter_fullscreen: Pass in monitor for fullscreen window" we need a monitor number to determine where to move the window when going fullscreen. Since the VirtViewerDisplay needs to know the fullscreen monitor number too, to determine the fullscreen size it was being stored there. But we don't always have a display, leading to errors like: (remote-viewer:7996): remote-viewer-CRITICAL **: virt_viewer_display_get_monitor: assertion `VIRT_VIEWER_IS_DISPLAY(self)' failed And to the monitor number not always being stored. This patchset fixes this by storing the monitor number inside VirtViewerWindow, and passing it to VirtViewerDisplay only when we've a display. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* Fix compilation with older glib versionsChristophe Fergeau2013-03-203-0/+53
| | | | | | Recent commits introduced use of g_clear_object and g_byte_array_new_take which are only present respectively in glib 2.28 and 2.32
* Fix compilation with older gtk+Christophe Fergeau2013-03-202-0/+6
| | | | | gtk_widget_get_mapped is only available in gtk+ 2.20, so we need a compat definition for older releases.
* virt-viewer-display-spice: Use display monitor property for fullscreen sizeHans de Goede2013-03-201-1/+3
| | | | | | | | | | | | | | | | When a display is pinned to a certain monitor for fullscreen, it will be moved there when going fullscreen. Currently we use gdk_screen_get_monitor_at_window to determine which monitor we are on and get the size from that monitor. But this is racy, sometimes the size_allocate function runs before the move has finished and we get the size from the wrong monitor: https://bugzilla.redhat.com/show_bug.cgi?id=918570 Since if the display is pinned to a certain monitor, the display will always end up on that monitor we can avoid the race by simply using that monitors size. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* virt_viewer_window_enter_fullscreen: Pass in monitor for fullscreen windowHans de Goede2013-03-203-20/+22
| | | | | | | | | | Rather then passing in a move boolean + coordinates to move the window to for fullscreen mode, simply pass in the monitor, so that the underlying objects can also use the monitors size to determine the display size. Note: pass in -1 to use the monitor the window is currently on. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* virt-viewer-display: Add monitor propertyHans de Goede2013-03-202-0/+36
| | | | Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* spice: update fullscreen state on display creationMarc-André Lureau2013-03-131-0/+1
| | | | | | | This ensure self->priv->auto_resize has correct value. And allow changing guest resolution when started in fullscreen. https://bugzilla.redhat.com/show_bug.cgi?id=873298
* Don't override G_LOG_DOMAIN=allMarc-André Lureau2013-03-131-1/+2
| | | | | If the string is different, the GLib log handler will not log all messages.
* file: add version field, raise an error if incompatibilyMarc-André Lureau2013-03-084-7/+58
| | | | | | The virt-viewer connection file can now have a version=0.5 field. If the virt-viewer version opening the connection doesn't provide at least that version, an error is raised with the version required.
* Allow app_initial_connect() to raise an errorMarc-André Lureau2013-03-088-64/+81
|
* Add virt_viewer_compare_version()Marc-André Lureau2013-03-082-0/+50
|
* Add VIRT_VIEWER_ERROR GErrorMarc-André Lureau2013-03-082-0/+13
|
* Fix send-key menu not showing in fullscreen with gtk3 (rhbz#913601)Hans de Goede2013-02-211-0/+2
| | | | | | | This should also fix the send-key menu showing in the wrong position with a gtk2 build, when the tooltray icon is clicked on the 2nd or higher monitor. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* build-sys: add --with-buildid to details build versionMarc-André Lureau2013-02-123-3/+3
| | | | | | Add a configure argument to append build version details, similar to what Daniel Berrange proposed in the "use finer package version in mingw-virt-viewer" thread on the ML.
* Register remote-viewer mime handlingMarc-André Lureau2013-02-112-11/+0
| | | | | | Unfortunately, I don't see yet how we could avoid the browser dialog asking which application to open. On Firefox, each user has a mimeTypes.rdf, but we can't really modify it..
* win32: process message queue in debug-helperMarc-André Lureau2013-02-111-2/+14
| | | | | | | | | Process messages while waiting for pi.hProcess. Avoid the spice-x from hanging in WaitForInputIdle(), although the client itself might not be ready, not even started... https://bugzilla.redhat.com/show_bug.cgi?id=903190
* virtviewer-window: Make sure fullscreen window stays on the same monitorHans de Goede2013-02-111-1/+14
| | | | | | | | | | | | | Sometimes the guest may shortly disable and then re-enable a monitor while in fullscreen mode, this happens for example when changing display resolution through gnome-display-properties inside the guest. This causes the client window-manager to remap the window, and this can cause it to end up on a different monitor. This patch fixes this by remembering the position the window is places at when going fullcreen and moving it there again when its gets (re-)shown. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* Fix "Do not ask me again" checkbox settings savingMarc-André Lureau2013-02-071-17/+22
| | | | | | | | | | | | | | | | | Based on bug report by Hans: The code block for saving was below this check: if (priv->session) { virt_viewer_session_close(VIRT_VIEWER_SESSION(priv->session)); if (priv->connected) { priv->quiting = TRUE; return; } } Which means it never executes when quiting virt-viewer while conneced, causing the "Do not ask me again" checkbox settings to not be saved.
* usbredir: Fix usbredir menu always being grayed out on monitor 2+Hans de Goede2013-02-061-0/+4
| | | | Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* virt-viewer-display-spice: Pass proper x and y coordinates in windowed modeHans de Goede2013-02-061-0/+7
| | | | | | | | | | | This stops monitor order from the guest from being re-arranged in multi- monitor setups when switching between fullscreen and windowed mode. Note this relies on spice-gtk's auto monitor alignment code, which currently does not properly handle setups where there is more then 1 row of monitors, ie 2x1 - 5x1 will work fine, but 2x2 will not. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* virt-viewer-display-spice: Use real monitor coordinates in fullscreenHans de Goede2013-02-061-1/+8
| | | | | | | | | Now that we pass the real monitor coordinates, tell spice-gtk to use them, rather then to use the passed coordinates as input for its automatic monitor alignment. This fixes ie monitors in a 2x2 grid, showing up as a 4x1 configuration in the guest. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* virt-viewer-display-spice: Pass real monitor coordinates in fullscreenHans de Goede2013-02-061-1/+4
| | | | | | Rather then always passing +0+0 Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* g_{message,warning}: Use printf styleMichal Privoznik2013-02-042-2/+2
| | | | | | The g_message() and g_warning functions expect printf style of arguments. That is, whenever we want to print a string, it has to be preceded with "%s" format.
* remote-viewer: controller sets spice session proxyMarc-André Lureau2013-01-311-1/+2
| | | | | Trivial change since spice-gtk now has proxy session property and controller message, just forward it.
* Add a "Do not ask me again" checkbox when closing appMarc-André Lureau2013-01-311-2/+62
|
* Always ask user about closing sessionMarc-André Lureau2013-01-311-11/+2
| | | | | | | | Currently, virt-viewer doesn't ask for user confirmation when closing a single monitor session. Always ask before closing, as requested by user. https://bugzilla.redhat.com/show_bug.cgi?id=803912