summaryrefslogtreecommitdiffstats
path: root/src/virt-viewer-session-spice.c
Commit message (Collapse)AuthorAgeFilesLines
* Monitor config at sometimes leaves additional monitors enabledJonathon Jongsma2015-03-231-5/+8
| | | | | | | | | | | | | | | | | | | | | | | When using the configuration file to specify which remote monitors should be enabled when using the --full-screen option, it sometimes left additional displays enabled, or didn't place the displays on the right monitor, or didn't fullscreen them. This was especially true when not enabling the first display on the remote host. For example: monitor-mapping=2:2;3:3 (note that configuration file uses 1-based indexes, rather than 0-based indexes, so the numbers used below will be 1 less than those above) Previously, when performing fullscreen auto-conf, we were configuring displays starting at #0 and ending at ndisplays. So for the previous configuration, we looped from i = 0 to i < 2 (i.e. display #0 and #1) even though we should have configured display #1 and #2. After this fix, we configure the exact displays that were specified in the monitor-mapping configuration. Resolves: rhbz#1200750
* Add virt_viewer_session_can_share_folder()Marc-André Lureau2015-03-051-0/+9
| | | | | Functions name says it all, it is only implement for Spice, checking for webdav channel presence.
* spice: enable/disable share folderMarc-André Lureau2015-03-051-0/+28
| | | | Connect/disconnect webdav channel to enable or disable sharing folder
* spice: sync share folder preferences with sessionMarc-André Lureau2015-03-041-0/+7
|
* misc: add a missing "static" for functionMarc-André Lureau2015-03-041-1/+1
|
* spice: calling VirtViewerSession:close() can destroy selfMarc-André Lureau2014-12-011-0/+7
| | | | | | | | | | | | | | | | | SpiceSession in spice-gtk v0.27 will remove channels from session during disconnect (and not when they are actually disposed). When no channels are left, session-disconnected is emitted, and the VirtViewerSession will be unref from the application. Use a weak reference to self to avoid crashing after calling spice_session_disconnect() As a workaround for existing clients, spice-gtk v0.27 will defer the disconnection to idle time. But the fix still makes sense and would prevent potentially future issues if spice-gtk changes back to sync disconnection. (the alternative of calling ref/unref would needlessly recreate a SpiceSession with a call to create_spice_session(), which is something we can avoid when leaving the application)
* spice: use virt_viewer_signal_connect_objectMarc-André Lureau2014-11-251-25/+30
| | | | | | This isn't required, but makes it easier to track reference issues, as you have guarantee that callbacks won't be executed if the objects are disposed.
* Check for spice-gtk 0.26 instead of a git snapshot of 0.25Daniel P. Berrange2014-11-041-1/+1
| | | | | | As spice-gtk macro for checking the version numbers was broken, let's check for 0.26 and avoid to have virt-viewer broken on a few distros for a good long time.
* Shift top-left display to originJonathon Jongsma2014-10-271-5/+15
| | | | | | | | | | | | | | When using a custom fullscreen display configuration, it's possible to specify that e.g. a single screen should be fullscreen on client monitor #4. Since we send down absolute positions and disable alignment when all windows are in fullscreen, we can send configurations with a very large offset to the top-left corner. This could result in the guest trying to create a screen that was much larger than necessary. For example when sending a configuration of 1280x1024+4240+0, the guest would need to allocate a screen of size 5520x1024, which might fail if video memory was too low. To avoid this issue, we shift all displays so that the minimum X coordinate for all screens is at x=0, and the minimum y coordinate is at y=0.
* Check for the right spice version in session-spice.cFabiano Fidêncio2014-10-161-1/+1
| | | | | | We have to check for the spice version where the SPICE_CLIENT_ERROR_AUTH_NEEDS_PASSWORD_AND_USERNAME was introduced and not for the one where spice_channel_get_error() was introduced.
* Prefill the username in the authentication dialogFabiano Fidêncio2014-10-101-6/+10
| | | | | Lets prefill the username entry using the user name of the current user.
* Use 'username' property from .vv file for spice-sessionFabiano Fidêncio2014-10-101-0/+7
|
* Ask for username when connecting with SASLFabiano Fidêncio2014-10-101-3/+26
| | | | | When connecting with SASL for authentication, some authentication mechanisms need a username (the plain text and md5 ones, for example).
* Let the user cancel the SPICE auth dialogFabiano Fidêncio2014-09-261-3/+3
| | | | | | | virt_viewer_auth_collect_credentials() was recently changed to return a boolean instead of an integer (2561c171). This change introduced a regression in the authentication dialog behavior, making it impossible for the user to cancel.
* Don't show extra screens in fullscreen modeJonathon Jongsma2014-09-241-0/+3
| | | | | | | | | | | | | | When using the fullscreen display mapping configuration file, extra monitors could end up enabled by mistake. This was because virt_viewer_app_get_initial_monitor_for_display would end up returning Nmonitor = Ndisplay when the display map hash lookup failed. In reality, when a display map is specified, but the hash lookup fails, the display should not be enabled. This function now returns -1 to distinguish this case, and the display is not enabled when this value is returned. Resolves issue described at https://bugzilla.redhat.com/show_bug.cgi?id=1129477#c9
* Force displays to update geometry when agent connectsFabiano Fidêncio2014-08-191-0/+4
| | | | | | | | We have to force displays to update geometry when the agent connects to ensure the client will have the guest with the right resolution when the guest has rebooted or the agent has crashed. https://bugzilla.redhat.com/sho_bug.cgi?id=1021841
* Don't use fallback ca-file when launching vv-fileJonathon Jongsma2014-08-151-1/+4
| | | | | | | | | When launching from a vv-file, we want to use the ca specified in the vv file and not load additional certs from the fallback ca-file. This ensures that the ca-file property of the spice session is unset when loading a ca from a vv-file. Resolves: rhbz#1127762
* Change per-guest fullscreen config formatJonathon Jongsma2014-08-071-1/+1
| | | | | | | | | | | use <display>:<monitor>;<display>:<monitor> instead of simply implying the display from the array index (e.g. <monitor>;<monitor>). This allows you to set up sparse guest displays (e.g. display 1 + 3). For example, to configure display 1 to be fullscreen on monitor 2 and display 2 to be fullscreen on monitor 3: monitor-mapping=1:2;2:3
* Add a dialog showing details of the current guestJonathon Jongsma2014-08-071-2/+17
| | | | | | This allows the user to obtain the GUID and vm name of the currently-connected guest. Obviously, this only works with spice. In the future, it will allow them to set guest-specific configuration options (using a GUID as a key)
* spice: avoid crash if connection failed without errorMarc-André Lureau2014-07-211-1/+1
| | | | spice_channel_get_error() is not guarantee to return a GError.
* app: report disconnection error detailsMarc-André Lureau2014-07-081-4/+4
| | | | | | It may be useful to provide more detailed reason for disconnection. https://bugzilla.redhat.com/show_bug.cgi?id=1115986
* Fix a floating display warningMarc-André Lureau2014-06-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | You can reproduce the error by starting the client in kiosk and shuting down the guest. #0 0x000000317e432915 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #1 0x000000317e4340f5 in abort () at abort.c:92 #2 0x000000317fc4a98a in g_logv (log_domain=0x318730e657 "Gtk", log_level=<value optimized out>, format= 0x31873a50a8 "A floating object was finalized. This means that someone\ncalled g_object_unref() on an object that had only a floating\nreference; the initial floating reference is not owned by anyone\nand must be remo"..., args1=0x7fffffffd5f0) at gmessages.c:557 #3 0x000000317fc4aa23 in g_log (log_domain=<value optimized out>, log_level=<value optimized out>, format=<value optimized out>) at gmessages.c:577 #4 0x000000318717ba72 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0 #5 0x0000000000426eb5 in virt_viewer_display_spice_finalize (obj=0x6fec20 [VirtViewerDisplaySpice]) at virt-viewer-display-spice.c:67 #6 0x0000003180c106a4 in g_object_unref (_object=0x6fec20) at gobject.c:2712 #7 0x0000000000425b5d in destroy_display (data=0x6fec20) at virt-viewer-session-spice.c:596 #8 0x000000317fc1667b in g_ptr_array_foreach (array=0x74a040, func=0x425ae7 <destroy_display>, user_data=0x0) at garray.c:1306 #9 0x000000317fc16e7b in g_ptr_array_free (farray=0x74a040, free_segment=1) at garray.c:938 #10 0x000000317fc2906a in g_data_set_internal (datalist=<value optimized out>, key_id=1297, data=0x0, destroy_func=0) at gdataset.c:351 #11 g_datalist_id_set_data_full (datalist=<value optimized out>, key_id=1297, data=0x0, destroy_func=0) at gdataset.c:598 #12 0x00000000004268d0 in virt_viewer_session_spice_channel_destroy (s=0x800000 [SpiceSession], channel=
* Replace DEBUG_LOG with g_debugMarc-André Lureau2014-06-101-24/+24
| | | | https://bugzilla.redhat.com/show_bug.cgi?id=1107518
* Fix building with older spice-gtkMartin Kletzander2014-03-141-4/+9
| | | | | | | | | | | | | | | | | | | Due to spice-gtk-0.23 missing SPICE_GTK_CHECK_VERSION macro, the condition: causes the following error: virt-viewer-session-spice.c: In function 'virt_viewer_session_spice_main_channel_event': virt-viewer-session-spice.c:525:64: error: missing binary operator before token "(" #if defined(SPICE_GTK_CHECK_VERSION) && SPICE_GTK_CHECK_VERSION(0, 23, 21) ^ Also one more warning is fixed in this patch: virt-viewer-session-spice.c:476:19: warning: unused variable 'error' [-Wunused-variable] const GError *error; ^ Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
* spice: ask credentials for proxyMarc-André Lureau2014-02-241-5/+35
| | | | | If Spice proxy requires authentication, ask credentials and try connecting again.
* Fix a gcc warning when compiling with mingw32Marc-André Lureau2014-02-241-1/+1
|
* Do all display alignment in virt-viewerJonathon Jongsma2013-11-271-5/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | Don't rely on spice-gtk to do any alignment of displays. This patch sets the disable-display-align property on the SpiceMainChannel, and makes the VirtViewerSession in charge of doing all alignment. This means that every display has to tell the VirtViewerSession when its "virtual monitor" has changed configuration (and wants to reconfigure its display on the guest), rather than sending it directly to the Main Channel. The session will then align the displays (if necessary), and the spice session will send down new configuration for all displays at once. This solves a couple of problems: 1. It allows the session to send down absolute coordinates only in the case where *all* windows are fullscreen (so that we can still support vertically-stacked displays, etc). But it auto-aligns displays if only a subset of the displays are in fullscreen mode. This solves the problem of overlapping regions on different displays when one monitor is in fullscreen because only one monitor's configuration was updated and the others were not aligned. 2. Allows us to always align based on the current position of each display. This contrasts with the earlier behavior where the position used for alignment was the window's position at the time when it was last resized. This caused displays to be arranged in a seemingly non-deterministic manner if one window was moved and then another window was resized (causing a display re-configuration). Solves rhbz#1002156
* Ensure auto-conf is only done onceJonathon Jongsma2013-11-201-0/+9
| | | | | | Auto-conf should only happen at startup. It is triggered from several places due to the somewhat unreliable ordering of events, but that doesn't mean we want to run it several times. This patch ensures that we only do it once.
* Add ability to define custom display->monitor mapping per vmJonathon Jongsma2013-11-201-12/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Fullscreen mode generally just assigns display 1 to monitor 1, display 2 to monitor 2, etc. For custom setups, you can define a monitor mapping in the settings keyfile per-vm. This requires a vm uuid (so only works in virt-viewer or on versions of spice-server that send the uuid over the wire). The format is pretty basic: [6485b20f-e9da-614c-72b0-60a7857e7886] monitor-mapping=2;3 The group name ("6485b20f-e9da-614c-72b0-60a7857e7886") is the uuid id of the vm. This group has a single key: monitor-mapping. This key is an array of integers describing the order in which to assign the monitors to a guest display. Any monitors that are not listed in this array will not be configured at startup. For instance: monitor-mapping=2;1 will attempt to configure 2 displays on the guest and assign the first display to monitor 2 and the second display to monitor 1. monitor-mapping=2 will only configure a single display on the guest and place it on the second monitor. Any monitor numbers listed in the keyfile are greater than the number of monitors that are physically present, they will be ignored.
* session: Don't hold VirtViewerDisplay refs on channel destroyChristophe Fergeau2013-11-201-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | VirtViewerSessionSpice creates a reference-holding VirtViewerDisplay array and associates it with the display SpiceChannel with g_object_set_data(channel, "virt-viewer-displays"). When virt_viewer_session_spice_channel_destroy() is called and the display channel is being destroyed, we should ensure these VirtViewerDisplay references are dropped or the displays could outlive the session. In my testing (start qemu with a f20 live cd, connect to it, when the kernel has started booting and qxl is initialized (4 displays listed in the display submenu), kill qemu), I was getting "invalid unclassed pointer in cast to 'VirtViewerSessionSpice'" warnings through #0 0x00000035bac504e9 in g_logv (log_domain=0x35bb039aa4 "GLib-GObject", log_level=G_LOG_LEVEL_WARNING, format=<optimized out>, args=args@entry=0x7fffffffc7c0) at gmessages.c:989 #1 0x00000035bac5063f in g_log ( log_domain=log_domain@entry=0x35bb039aa4 "GLib-GObject", log_level=log_level@entry=G_LOG_LEVEL_WARNING, format=format@entry=0x35bb041010 "invalid unclassed pointer in cast to '%s'") at gmessages.c:1025 #2 0x00000035bb032e09 in g_type_check_instance_cast (type_instance=0x665580, iface_type=<optimized out>) at gtype.c:4025 #3 0x0000000000426e9f in get_main (self=0x894190) at virt-viewer-display-spice.c:92 #4 0x0000000000426ece in show_hint_changed (self=0x894190) at virt-viewer-display-spice.c:100 #5 0x00000035bb010298 in g_closure_invoke (closure=0x9f47c0, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffffffcad0, invocation_hint=invocation_hint@entry=0x7fffffffca70) at gclosure.c:777 #6 0x00000035bb02235d in signal_emit_unlocked_R (node=node@entry=0x651f60, detail=detail@entry=1782, instance=instance@entry=0x894190, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffcad0) at gsignal.c:3586 #7 0x00000035bb02a0f2 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffcc60) at gsignal.c:3330 #8 0x00000035bb02a3af in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at gsignal.c:3386 #9 0x00000035bb014945 in g_object_dispatch_properties_changed (object=0x894190, n_pspecs=92, pspecs=0x0) at gobject.c:1047 #10 0x00000035bb017019 in g_object_notify_by_spec_internal (pspec=<optimized out>, object=0x894190) at gobject.c:1141 #11 g_object_notify (object=0x894190, property_name=<optimized out>) at gobject.c:1183 #12 0x000000000041b617 in virt_viewer_display_set_show_hint (self=0x894190, mask=1, enable=0) at virt-viewer-display.c:659 #13 0x000000000042712c in update_display_ready (self=0x894190) at virt-viewer-display-spice.c:156 #14 0x00000035bb010298 in g_closure_invoke (closure=0x6ba480, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffffffcfb0, invocation_hint=invocation_hint@entry=0x7fffffffcf50) at gclosure.c:777 #15 0x00000035bb02235d in signal_emit_unlocked_R (node=node@entry=0x651f60, detail=detail@entry=1798, instance=instance@entry=0xa2c250, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffcfb0) at gsignal.c:3586 #16 0x00000035bb02a0f2 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffd140) at gsignal.c:3330 #17 0x00000035bb02a3af in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at gsignal.c:3386 #18 0x00000035bb014945 in g_object_dispatch_properties_changed (object=0xa2c250, n_pspecs=92, pspecs=0x0) at gobject.c:1047 #19 0x00000035bb017019 in g_object_notify_by_spec_internal (pspec=<optimized out>, object=0xa2c250) at gobject.c:1141 #20 g_object_notify (object=0xa2c250, property_name=<optimized out>) at gobject.c:1183 #21 0x00007ffff7044d9a in update_ready (display=0xa2c250) at spice-widget.c:257 #22 0x00007ffff7044df0 in set_monitor_ready (self=0xa2c250, ready=0) at spice-widget.c:265 #23 0x00007ffff7049bb3 in primary_destroy (channel=0x9f40b0, data=0xa2c250) at spice-widget.c:2131 #24 0x00007ffff704afd5 in channel_destroy (s=0x892880, channel=0x9f40b0, data=0xa2c250) at spice-widget.c:2444 #25 0x00000035bb010298 in g_closure_invoke (closure=0xa27850, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffffffd570, invocation_hint=invocation_hint@entry=0x7fffffffd510) at gclosure.c:777 #26 0x00000035bb02235d in signal_emit_unlocked_R (node=node@entry=0x7cf600, detail=detail@entry=0, instance=instance@entry=0x892880, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd570) at gsignal.c:3586 #27 0x00000035bb02a0f2 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffd700) at gsignal.c:3330 #28 0x00000035bb02a3af in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at gsignal.c:3386 #29 0x00007ffff6ceba87 in spice_session_channel_destroy (session=0x892880, channel=0x9f40b0) at spice-session.c:1923 #30 0x00007ffff6cecf05 in spice_channel_dispose (gobject=0x9f40b0) at spice-channel.c:149 #31 0x00007ffff6cf912c in spice_display_channel_dispose (object=0x9f40b0) at channel-display.c:136 #32 0x00000035bb014ee8 in g_object_unref (_object=0x9f40b0) at gobject.c:3160 #33 0x00007ffff6cf300c in spice_channel_delayed_unref (data=0x9f40b0) at spice-channel.c:2135 #34 0x00000035bac492a6 in g_main_dispatch (context=0x67a6b0) at gmain.c:3066 #35 g_main_context_dispatch (context=context@entry=0x67a6b0) at gmain.c:3642 #36 0x00000035bac49628 in g_main_context_iterate (context=0x67a6b0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3713 #37 0x00000035bac49a3a in g_main_loop_run (loop=0x7baf60) at gmain.c:3907 #38 0x00000035bfdaa2d5 in gtk_main () at gtkmain.c:1158 #39 0x000000000042caf1 in main (argc=1, argv=0x7fffffffdc78) at remote-viewer-main.c:179 In that backtrace, the last ref to the VirtViewerDisplay instances is held by the SpiceChannel:virt-viewer-displays object data which will only be released after completion of spice_display_channel_dispose()
* Remove obsolete use of SpiceChannel:virt-viewer-display object dataChristophe Fergeau2013-11-201-2/+1
| | | | | | | Commit 0d58d9c72 removed the setting of the SpiceChannel:virt-viewer-display object data, but there was still a call to g_object_get_data() trying to use it. Since it's only used to output a debug log, we can remove this call and fix up the debug log.
* Drop basic fullscreen modeJonathon Jongsma2013-11-131-7/+1
| | | | | | Remove the distinction between --full-screen and --full-screen=auto-conf. Just make --full-screen behave like auto-conf did. There's really no advantage to having two slightly different fullscreen startup modes.
* Don't freeze property notifications when adding new displaysJonathon Jongsma2013-10-181-4/+0
| | | | | | | | | Freezing property notifications prevents VirtViewerDisplaySpice from synchronizing its fullscreen/auto-resize state with the base class until after the notifications are thawed. During the time that notifications were frozen, an allocation happens. The action we take on an allocation event depends on the current state of the auto_resize variable, so this can result in an unwanted resize.
* spice: show an error dialog if password is invalidMarc-André Lureau2013-08-081-0/+7
| | | | | | | Error message should show up when input the wrong password for spice guests as vnc guests. https://bugzilla.redhat.com/show_bug.cgi?id=990883
* Add VirtViewerSession::software-smartcard-reader propertyChristophe Fergeau2013-07-311-6/+69
| | | | | | | This property will be set to TRUE when a software smartcard reader is available, and FALSE otherwise. This property can only be TRUE when using SPICE and when smartcard support is enabled, and when both smartcard certificates and smartcard db directory are set.
* usbredir: Don't depend on channel orderingHans de Goede2013-07-061-13/+15
| | | | | | | | | | | | | Before this patch-set virt-viewer was calling spice_session_has_channel_type( session, SPICE_CHANNEL_USBREDIR) from the session-initialized signal handler, So as soon as the display channel gets added to the session, the check was done. This causes the check to return FALSE for usbredir capable vms if the usbredir channel(s) get added to the session after the display channed. This patch refactors things to not depend on channel creation order. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* spice-session: use a more robust signal connectMarc-André Lureau2013-05-171-4/+4
| | | | | | The Spice session may outlive the virt-viewer session, due to it's async nature. Use the more robust virt_viewer_signal_connect_object() to fix delayed potential crashes.
* misc: fix typoMarc-André Lureau2013-05-131-1/+1
|
* spice: forward secure-channelsMarc-André Lureau2013-04-151-0/+6
| | | | This needs spice-gtk >= 0.19.7 and will warn with lower version
* 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
* file: add version field, raise an error if incompatibilyMarc-André Lureau2013-03-081-1/+2
| | | | | | 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-081-2/+2
|
* spice: add proxy configuration to connection fileMarc-André Lureau2013-01-291-0/+6
|
* session-spice: Cast CA string to gunit8 pointerMichal Privoznik2012-12-051-1/+1
| | | | | | | SpiceSession has 'ca' property which is type of GByteArray*. However, when we read the property from file, we read it as string. For conversion g_byte_array_new_take() is used which takes given pointer as guint8* so we need to do the cast.
* spice: learn to connect from fileMarc-André Lureau2012-11-271-1/+90
|
* session: add virt_viewer_session_mime_type()Marc-André Lureau2012-11-271-0/+7
|
* spice: the session is connected when main channel openedMarc-André Lureau2012-11-211-2/+1
| | | | | | | The previous change in 399aae55aa384bf91dff0fc770497c0d5f935fa9 rely on correct session-connected signal. However, the spice backend is emiting it too early, when the main channel is created, where it should wait until it is connected instead.
* Don't free SPICE ticket twiceChristophe Fergeau2012-10-011-1/+0
| | | | | | | Commit 2201a5a was supposed to free a SPICE ticket leak, but it's actually introducing a double-free as the SPICE ticket is unconditionally freed at the end of virt_viewer_session_spice_main_channel_event
* Add VirtViewerSession::session-display-updatedMarc-André Lureau2012-07-231-4/+14
| | | | | Rebuild menu when agent is connected. Only when the agent is running may a display be enabled/disabled.