| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
|
| |
If the parent is already destroyed, it looks like the dialog is
destroyed too. This avoids a crash when calling app_quit().
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Use virt_viewer_signal_connect_object(), a copy of telepathy
utility function tp_g_signal_connect_object(). This function
will take care of removing signal handler if any of emitter or
attached object are destroyed.
The following patches will have this condition met, since there is no
longer 1-1 relation between channel and display. The channels can
continue to be around when some of the display are removed.
|
|
|
|
|
| |
Do keep client monitor position, do not align monitors automatically.
The align property is only available since v0.12.101.
|
|
|
|
|
|
|
| |
This reverts commit 3ce6df7c309068f36e2602692da809a153ed5688. This
commit broke virt-viewer which expects this function to return -1
or 0 on error, and a positive value on success in
virt_viewer_initial_connect.
|
|
|
|
|
|
|
|
| |
VirtViewerApp::activate is expected to return -1 on errors.
It calls the VirtViewerSession::open_* methods, which return FALSE
on error. However, VirtViewerApp::activate directly returns these
boolean instead of testing the returned value and properly returning
-1 on errors. This caused errors in these open methodes to be ignored.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
==25063== 59 bytes in 1 blocks are definitely lost in loss record 5,163 of 9,502
==25063== at 0x4A0884D: malloc (vg_replace_malloc.c:263)
==25063== by 0x3DE384D2BE: g_malloc (gmem.c:159)
==25063== by 0x3DE3862D0B: g_strdup (gstrfuncs.c:356)
==25063== by 0x41F40A: connected (remote-viewer-main.c:186)
==25063== by 0x3DE400F663: g_closure_invoke (gclosure.c:777)
==25063== by 0x3DE40206D7: signal_emit_unlocked_R (gsignal.c:3547)
==25063== by 0x3DE402866C: g_signal_emit_valist (gsignal.c:3296)
==25063== by 0x3DE4028CCF: g_signal_emit_by_name (gsignal.c:3389)
==25063== by 0x41AA53: reemit_signal_VOID (virt-viewer-session-ovirt.c:211)
==25063== by 0x3DE400F942: _g_closure_invoke_va (gclosure.c:840)
==25063== by 0x3DE4027D87: g_signal_emit_valist (gsignal.c:3207)
==25063== by 0x3DE4028CCF: g_signal_emit_by_name (gsignal.c:3389)
==25063== 14 bytes in 1 blocks are definitely lost in loss record 623 of 9,502
==25063== at 0x4A0884D: malloc (vg_replace_malloc.c:263)
==25063== by 0x34561092F7: __vasprintf_chk (vasprintf_chk.c:82)
==25063== by 0x3DE3882F1A: g_vasprintf (stdio2.h:199)
==25063== by 0x3DE3862EDC: g_strdup_vprintf (gstrfuncs.c:509)
==25063== by 0x3DE3862F7B: g_strdup_printf (gstrfuncs.c:535)
==25063== by 0x40CBAE: virt_viewer_app_update_pretty_address (virt-viewer-app.c:1538)
==25063== by 0x40FB55: virt_viewer_app_free_connect_info (virt-viewer-app.c:1707)
==25063== by 0x40FBE9: virt_viewer_app_dispose (virt-viewer-app.c:1291)
==25063== by 0x3DE40144F7: g_object_unref (gobject.c:2981)
==25063== by 0x40C31A: main (remote-viewer-main.c:336)
==25063== 10 bytes in 1 blocks are definitely lost in loss record 491 of 9,502
==25063== at 0x4A0884D: malloc (vg_replace_malloc.c:263)
==25063== by 0x34561092F7: __vasprintf_chk (vasprintf_chk.c:82)
==25063== by 0x3DE3882F1A: g_vasprintf (stdio2.h:199)
==25063== by 0x3DE3862EDC: g_strdup_vprintf (gstrfuncs.c:509)
==25063== by 0x3DE3862F7B: g_strdup_printf (gstrfuncs.c:535)
==25063== by 0x40DE36: window_update_menu_displays_cb (virt-viewer-app.c:1640)
==25063== by 0x3DE383833F: g_hash_table_foreach (ghash.c:1524)
==25063== by 0x3DE400F663: g_closure_invoke (gclosure.c:777)
==25063== by 0x3DE40206D7: signal_emit_unlocked_R (gsignal.c:3547)
==25063== by 0x3DE402866C: g_signal_emit_valist (gsignal.c:3296)
==25063== by 0x3DE40287C1: g_signal_emit (gsignal.c:3352)
==25063== by 0x5772F95: gtk_widget_show (gtkwidget.c:3225)
==25063== 8,431 (72 direct, 8,359 indirect) bytes in 1 blocks are definitely lost in loss record 9,468 of 9,502
==25063== at 0x4A0884D: malloc (vg_replace_malloc.c:263)
==25063== by 0x3DE384D2BE: g_malloc (gmem.c:159)
==25063== by 0x3DE38616B1: g_slice_alloc (gslice.c:1003)
==25063== by 0x3DE3861C05: g_slice_alloc0 (gslice.c:1029)
==25063== by 0x3DE402F96F: g_type_create_instance (gtype.c:1872)
==25063== by 0x3DE40147A7: g_object_constructor (gobject.c:1849)
==25063== by 0x3DE4016260: g_object_newv (gobject.c:1632)
==25063== by 0x3DE40168AB: g_object_new (gobject.c:1542)
==25063== by 0x40C4BD: virt_viewer_util_load_ui (virt-viewer-util.c:41)
==25063== by 0x40C7EB: virt_viewer_auth_collect_credentials (virt-viewer-auth.c:43)
==25063== by 0x41B391: authenticate_cb (virt-viewer-session-ovirt.c:430)
==25063== by 0x3458C05E8F: ffi_call_unix64 (unix64.S:75)
==25063== 32 (16 direct, 16 indirect) bytes in 1 blocks are definitely lost in loss record 3,962 of 9,502
==25063== at 0x4A0884D: malloc (vg_replace_malloc.c:263)
==25063== by 0x3DE384D2BE: g_malloc (gmem.c:159)
==25063== by 0x3DE38616B1: g_slice_alloc (gslice.c:1003)
==25063== by 0x3DE38629F2: g_slist_append (gslist.c:222)
==25063== by 0x41483C: virt_viewer_window_init (virt-viewer-window.c:323)
==25063== by 0x3DE402FA05: g_type_create_instance (gtype.c:1892)
==25063== by 0x3DE40147A7: g_object_constructor (gobject.c:1849)
==25063== by 0x3DE4015D70: g_object_newv (gobject.c:1713)
==25063== by 0x3DE401655F: g_object_new_valist (gobject.c:1830)
==25063== by 0x3DE4016893: g_object_new (gobject.c:1545)
==25063== by 0x40DA34: virt_viewer_app_window_new (virt-viewer-app.c:590)
==25063== by 0x40E300: virt_viewer_app_constructor (virt-viewer-app.c:1336)
==30355== 4 bytes in 1 blocks are definitely lost in loss record 53 of 9,267
==30355== at 0x4A0884D: malloc (vg_replace_malloc.c:263)
==30355== by 0x3DE384D2BE: g_malloc (gmem.c:159)
==30355== by 0x3DE3862D0B: g_strdup (gstrfuncs.c:356)
==30355== by 0x3DE40360FC: value_copy_string (gvaluetypes.c:276)
==30355== by 0x3DE40340CA: g_value_transform (gvalue.c:535)
==30355== by 0x3FDAE621DD: gdk_screen_get_setting (gdkevents-x11.c:3022)
==30355== by 0x3FDB3C7415: gtk_settings_get_property (gtksettings.c:1152)
==30355== by 0x3DE4017A74: g_object_get_property (gobject.c:1289)
==30355== by 0x414991: virt_viewer_window_disable_modifiers (virt-viewer-window.c:616)
==30355== by 0x415922: virt_viewer_window_keyboard_grab (virt-viewer-window.c:931)
==30355== by 0x3DE400F942: _g_closure_invoke_va (gclosure.c:840)
==30355== by 0x3DE4027D87: g_signal_emit_valist (gsignal.c:3207)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix switch-host migration with Spice.
spice-gtk doesn't like channels staying around when they should be
destroyed/finalized, ie removed from session.
spice-gtk should probably learned to handle better the case of non
cooperating clients, and be able to dissociate a channel from a
session without waiting for it to be disposed, but for now, the
relation is quite tight.
|
|
|
|
|
|
|
|
| |
The gtk_widget_get_pointer() API is deprecated in GTK3 since it
is not aware of multiple pointers. Replace its usage in autoDrawer.c
with GdkDeviceManager and friends
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
|
|
|
|
|
|
|
|
| |
The GtkStyle API has been deprecated in favour of GtkStyleContext.
Update ovBox.c to use the latter if building with GtK3. Also replace
use of the gtk_widget_size_request API with gtk_widget_get_preferred_size.
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Some distros (a 4-letters) don't have icotool.
Let's ship the .ico in the tarball.
The build will fail if icoutil is not installed when
building from git or when the .ico is absent. The error
should be explicit.
|
|
|
|
|
|
|
|
|
|
|
| |
When disposing of the VirtViewerApp, we free the hash table
containing the windows. This causes each window to be freed,
which in turn causes the visibility callback to be invoked.
This can then get NULL pointers from the self->priv->windows
usage.
Blank out priv->windows before unrefing the hashs and add
a check to ensure priv->windows is non-NULL.
|
|
|
|
|
|
|
|
|
|
|
| |
When running virt-viewer with the --reconnect argument, when
the session closes, the VirtViewerWindow instances were being
freed, but not the GtkWindow itself. So the orphaned window
stayed around doing nothing. The GtkBuilder instance was also
leaked.
Fix these two leaks & also add some debugging to help future
troubleshooting
|
|
|
|
|
| |
The USB device selection applies immediately, so the dialog
should be using 'Close' instead of 'OK' for its primary button
|
|
|
|
|
|
| |
When switching from getenv to g_getenv, 'doms' declaration
wasn't changed from char * to const char *, which causes
a gcc warning.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Currently the window titles for remote-view have 'remote-viewer'
appended them. This is based off the argv[0] name. We should be
setting the GLib application name though, so we can get a localized
'Remote Viewer' string in the titlebar
|
|
|
|
|
|
| |
Support vnc://[x:y:z:]:5901/ for raw IPv6 addresses in URIs,
and qemu+ssh://root@[x:y:x:]:22/ for raw IPv6 addresses in
libvirt URIs
|
|
|
|
|
| |
Use round() instead of integer truncation when scaling the window,
to avoid floating point precision problems on i386
|
|
|
|
|
|
| |
Enable automagic handling of spice:// URLs in firefox by
registering a desktop handler for remote-viewer with the
SPICE URI scheme
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
remote-viewer is currently trying to use
SpiceUsbDeviceManager::auto-connect to control whether USB devices
should be automatically connected or not. However, this property
is more or less an internal spice-gtk property which is toggled
by SpiceGtkSession when the SPICE widget gets/loses focus.
SpiceGtkSession has an "auto-usbredir" property which can be used
by applications to enable/disable automatic usb redirection through
SPICE. Since this property is helpfully bound to
VirtViewerSession::auto-usbredir, use this when the controller
is told to enable/disable USB redirection.
Without this change, automatic USB redirection will always get reenabled
as soon as there's a focus change since SpiceGtkSession::auto-usbredir
defaults to be enabled in spice-gtk.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When clicking the close button on a virt-viewer window with
a VNC session open, while the VNC session terminates, the
window does not go away.
The problem is that the virt_viewer_session_vnc_disconnected
method never gets invoked. The close button triggers a call
to virt_viewer_session_clear_displays which unrefs the
VirtViewerDisplayVnc instance. This in turn triggers a call
to gtk_container_destroy, which destroys all widgets it
contains, ie the VncDisplay * object.
With the VncDisplay object in its dispose phase, no signals
will ever be emitted, thus the 'vnc-disconnected' signal
never gets seen.
The design issue is that VirtViewerDisplayVnc is assuming
it owns the VncDisplay, whereas in fact the real owner is
the VirtViewerSessionVnc object.
The solution is to introduce a new virt_viewer_display_close
method which can be used to de-parent the widget before
VirtViewerDisplay is unref'd.
The VirtViewerSessionVnc object also needs to hold a full ref
on the VncDisplay object, not merely a floating reference
* virt-viewer-display-spice.c, virt-viewer-display.c,
virt-viewer-display.h: Add virt_viewer_display_close
* virt-viewer-display-vnc.c: Deparent VNC widget in
virt_viewer_display_close impl
* virt-viewer-session-vnc.c: Improve logging
* virt-viewer-session.c: Call virt_viewer_display_close
before unrefing display
* virt-viewer-window.c: Improve logging
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
|
| |
|
|
|
|
|
| |
Signed-off-by: Yonit Halperin <yhalperi@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
|
| |
|
|
|
|
|
| |
If the application can attach to its parent console, redirect
input/output. So that will work nicely with the command line wrapper.
|
|
|
|
| |
Add a small command line wrapper, to be able to call GUI/windows application from the console
|
|
|
|
|
|
|
| |
This has 2 advantages, and I can't figure any drawback:
- it fixes the issue of mnemonic hints being draw when pressing Alt
key (character underlined), even when they were disabled.
- it simplifies the code :)
|
| |
|
|
|
|
|
|
|
|
| |
This makefile is just fantastic, it forces you into good practices,
support various build targets (my windows builddir ignore the right
files etc..)
The more I use it, the more I like it.
|
|
|
|
| |
Add application icon and manifest
|
|
|
|
|
|
|
|
|
| |
The current code will attempt to dereference args if
--spice-controller, even if args is NULL.
Let's not accept any extra argument/uri on the command line if using
the controller. Beside, the conditionnal block looks better outside of
the if condition.
|
|
|
|
| |
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
| |
|
| |
|
|
|
|
|
|
| |
If the user doesn't provide URI, let's show a simple dialog to enter it.
Also save & list recently used URLs in that dialog.
|
|
|
|
|
| |
Although the doc says it is only deprecated since >2.32, it's actually
>2.31 according to glib git log.
|
|
|
|
|
|
|
| |
Lower warning message to debug level. There are various racy ways it
ends up calling show_display although the display is not yet
ready. This is not such a big problem, although it would be nice to
handle this case better
|
|
|
|
|
|
|
| |
The current code only inform of focus state when the listener is ready.
spice-gtk controller code lacks signal when a client connects, but a
client will set the title when connected and send a notify signal.
Use this event to notify of application focus state.
|
| |
|
|
|
|
| |
The RemoveViewer object will have its own ref.
|
|
|
|
|
|
|
|
|
| |
Do not disconnect session when switching host (non-seamless migration
method).
Also, handle a bit better main channel events and do not disconnect on
unknown events, however raise unhandled event message to warning
level.
|
| |
|