summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Release v0.17v0.17Marc-André Lureau2013-02-061-0/+13
| | | | | | | | | | | | | | | v0.17 ===== - Update spice-common with fedora 875348, 826036 fixes - Multi-monitor fixes (avoid monitor order shuffling, fix mouse offset if monitor 0 is not at +0+0 and let agent do monitor offset) - Add support for VD_AGENT_CAP_SPARSE_MONITORS_CONFIG - Add controller & session "proxy" properties - Add drag and drop file copy support to send file to guest, you will need capable agent to use that feature. Adds spice_main_file_copy_async() - Introspection fixes - Build fixes
* spice-proxy: explicitely mark as internalMarc-André Lureau2013-02-061-0/+9
|
* widget: Fix mouse position reporting for multiple monitors on 1 display channelHans de Goede2013-02-061-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | VDAgentMouseState contains a display_id and expects coordinates in multi-mon mode to be relative to the origin of the monitor specified by the display_id. The agent will then adjust the mouse coordinates for the position of the monitor as configured in the guest. In multiple monitors on 1 display channel spice-gtk is wrongly setting display_id to the channel_id (which is 0 for all monitors), and is working around the problems this causes by doing the adjustment of the mouse position itself. But the agent is still applying the correction for the monitor position to all VDAgentMouseState messages it gets, and since for all monitors a display_id of 0 is reported it always uses the position of display 0 for the correction. Since the position of display 0 is usally +0+0 this usually works, but as soon as the position of display 0 is not +0+0, the correction will get done twice for display 0, and the display 0 position will wrongly get added the mouse position for other displays. This patch fixes this by properly setting display_id, and removing the modification of the mouse coordinates as that is already done in the agent. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* build: fix for automake-1.13Natanael Copa2013-02-041-1/+1
| | | | | | Use AC_CONFIG_HEADER instead of deprecated AM_CONFIG_HEADER. Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
* update spice-common submoduleYonit Halperin2013-01-311-0/+0
| | | | obtaining a fix related to palettes caching (fedora 875348, 826036)
* controller: add proxy propertyMarc-André Lureau2013-01-302-0/+7
|
* session: clear SpiceSession:proxy also if SPICE_PROXY is NULLMarc-André Lureau2013-01-291-3/+5
|
* Add SpiceSession:proxyMarc-André Lureau2013-01-293-10/+56
| | | | | | Add a session property to set proxy setting, since it is racy to rely on setenv(). Also doing so would override system environment, which will modify other session too sharing the same process.
* proxy: initialize proxy at session construct timeMarc-André Lureau2013-01-282-17/+25
|
* Fix a bunch of gtkdoc/giscan warningsMarc-André Lureau2013-01-286-12/+11
|
* Update spice-commonMarc-André Lureau2013-01-281-0/+0
|
* session: simplify a little bit open_host_idle_cbMarc-André Lureau2013-01-281-6/+7
| | | | | open_host->error is only set if we try to use a proxy. Let´s make that more clear.
* build-sys: generate THANKS at dist timeMarc-André Lureau2013-01-213-28/+12
|
* build-sys: Use a portable variable assignment in configure.acJasper Lievisse Adriaanse2013-01-211-4/+4
|
* build-sys: missing sys/types.h in gtk/channel-display.cJasper Lievisse Adriaanse2013-01-214-0/+10
|
* channel-main: Fix monitors_align to not shuffle monitor orderHans de Goede2013-01-181-9/+24
| | | | | | | | | | | | | | | | | | | | | | | Before this patch monitor_align was calling qsort directly on the VDAgentMonConfig monitors array, but VDAgentMonConfig does not contain an id, so the order matters! This fixes (for example) 2 issues with having 3 windows/monitors on a row numbered 1-3, ordered left-to-right as 1-2-3, and then changing the ordering to 1-3-2: 1) Window 3 would be resized to the size of window 2, and window 2 would get resized to the size of window 3. 2) Dragging a window on monitor 1 over its right edge, makes the part over the edge show up on the right monitor, rather then on the middle. This is happening because the agent is configuring qxl-1 (which is monitor 2) with the monitors[1] data, which after the qsort contains the size and coordinates of monitor 3. Note this only happens with virt-viewer fixed to properly send window coordinates, as before that all monitors had x and y set to 0 making the sort a nop. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* channel-main: Add support for VD_AGENT_CAP_SPARSE_MONITORS_CONFIG (rhbz#881072)Hans de Goede2013-01-182-6/+14
| | | | Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* spice-widget: update_monitor_area: Fix memory-leak on whole fallbackHans de Goede2013-01-181-0/+1
| | | | | | | | When we've successfully gotten the monitors display-channel property, but still end up falling back to whole-display mode, we still need to free the monitors array. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* spice-widget: Search monitor info by display monitor-idHans de Goede2013-01-181-4/+10
| | | | | | | | | As discussed indexing the display-channel's monitors property by monitor-id causes problems with the vdagent's new sparse monitor config support. Searching the monitors property by monitor-id avoids these problems. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* build-sys: fix out-of-tree build with valaAndrew Hughes2013-01-161-6/+8
|
* Fix introspection for send_keysCole Robinson2013-01-161-0/+11
| | | | | | | Without this I can't find a usable way to call this API with the introspected python bindings. https://bugs.freedesktop.org/show_bug.cgi?id=59444
* gtk: avoid use gtk+ 3.0 only APIMarc-André Lureau2013-01-141-5/+4
|
* file-xfer: always take error if set in xfer_read_cb()Marc-André Lureau2013-01-121-1/+1
|
* file-xfer: use file_xfer_..() prefix for all internal copy functionsMarc-André Lureau2013-01-121-60/+39
|
* file-xfer: move file_close_cb() above all to ease readingMarc-André Lureau2013-01-121-49/+44
|
* file-xfer: try to report any error from file_info_async_cb()Marc-André Lureau2013-01-121-41/+32
|
* file-xfer: non-programming errors should be reported in asyncMarc-André Lureau2013-01-121-2/+10
| | | | | | It is fine to not return async errors for programming errors via g_return_if_fail() and friends, however, we need to return proper error if it's a normal run-time error.
* file-xfer: avoid g_alloca() usage when possibleMarc-André Lureau2013-01-122-16/+12
|
* file-xfer: handle "drag-data-received" signalDunrong Huang2013-01-121-0/+46
| | | | | | | | | | When user drags a file to SpiceDisplay and drops it, a signal named "drag-data-received" will be emitted, the signal will be received by SpiceDisplay, then our signal handler should receive data which contains file path, and call spice_main_file_copy_async() to transfer file to guest. Signed-off-by: Dunrong Huang <riegamaths@gmail.com> Signed-off-by: mathslinux <riegamaths@gmail.com>
* file-xfer: disable file-xfer when agent is not connectedDunrong Huang2013-01-121-0/+4
| | | | | Signed-off-by: Dunrong Huang <riegamaths@gmail.com> Signed-off-by: mathslinux <riegamaths@gmail.com>
* file-xfer: handling various transfer messages in main channelDunrong Huang2013-01-124-0/+531
| | | | | | | | | | | | | | | | | | | | | | | | | This patch is aimed to handle various file xfer messages. How it works: 0) our main channel introduces a API spice_main_file_copy_async(). 1) When user drags a file and drop to spice client, spice client will catch a signal "drag-data-received", then it should call spice_main_file_copy_async() for transfering file to guest. 2) In main channel: when spice_main_file_copy_async() get called with file list passed, the API will send a start message which includes file and other needed information for each file. Then it will create a new xfer task and insert task list for each file, and return to caller. 3) According to the response message sent from guest, our main channel decides whether send more data, or cancel this xfer task. 4) When file transfer has finished, file xfer task will be removed from task list. Signed-off-by: Dunrong Huang <riegamaths@gmail.com> Signed-off-by: mathslinux <riegamaths@gmail.com>
* Release v0.16v0.16Marc-André Lureau2013-01-111-0/+8
| | | | | | | | | | v0.16 ===== - Fix crash with SSL connection (#890464) - Send monitor config to the agent on spice_main_set_display_enabled() (#881072) - Fix channel leak and wrong condition in spice_channel_flush() - Build fixes
* spice-channel: fix state condition check in flush()Marc-André Lureau2013-01-111-1/+1
|
* spice-channel: plug a channel ref leakMarc-André Lureau2013-01-111-0/+1
|
* Send monitor config to the agent on spice_main_set_display_enabled (#881072)Hans de Goede2013-01-091-0/+5
| | | | | | | | | | | | | | | | | | | | | | | Currently we send an updated monitor-config to the agent whenever some of the display settings are changed (whenever spice_main_set_display is called), including when a new display is enabled, as that involves creating a new window, which calls spice_main_set_display. The only exception to this is when a display gets disabled. This is rather inconistent, it causes the user to be able to move windows in the guest to the now no longer visible monitor, and any windows which were already there are hidden... until something else triggers us sending updated monitor info. Withe gnome3 an alt-tab away and back again from a still open display-window is enough to trigger the update, and then the guest will all of a sudden become aware of the monitor no longer being there and re-arrange windows accordingly, on an alt-tab in the client machine ... not pretty. So lets make things consistent and also send the agent updated monitor info from spice_main_set_display_enabled, like we already do from spice_main_set_display. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* Fix switching to TLS regression0.15.3Marc-André Lureau2012-12-271-15/+12
| | | | | | | | | The commit fcbbc248a8f885f9a9a6e7c47d7aae0c1ab3cd1b changed the way a channel coroutine is exiting. In particular, it was going through the coroutine main cleanup (finishing in main coroutine) while switching to TLS is recycling the channel. That part of the code is a bit difficult to grasp, but with this refactoring, I think it makes it easier to understand the reconnection.
* Clean-up idle handler when leaving the open_host_idle()Marc-André Lureau2012-12-271-6/+4
| | | | | | | An explicit yield back to the channel coroutine when the idle function is still pending will leave it in the background, referencing objects that may no longer exist. Make sure we remove it when channel_open_host() is resumed.
* mingw: Fix link errorsChristophe Fergeau2012-12-211-0/+1
| | | | | | | | | | | | | | | | | | | | Without this patch build fails with: CCLD libspice-client-glib-2.0.la .libs/spice-channel.o: In function `spice_channel_coroutine': /home/teuf/redhat/spice-gtk/gtk/spice-channel.c:2287: undefined reference to `_imp__setsockopt@20' .libs/channel-display.o: In function `create_compatible_dc': /home/teuf/redhat/spice-gtk/gtk/channel-display.c:672: undefined reference to `_imp__CreateCompatibleDC@4' ../spice-common/common/.libs/libspice-common.a(canvas_utils.o): In function `release_data': /home/teuf/redhat/spice-gtk/spice-common/common/canvas_utils.c:41: undefined reference to `_imp__DeleteObject@4' ../spice-common/common/.libs/libspice-common.a(canvas_utils.o): In function `surface_create': /home/teuf/redhat/spice-gtk/spice-common/common/canvas_utils.c:192: undefined reference to `_imp__CreateDIBSection@24' /home/teuf/redhat/spice-gtk/spice-common/common/canvas_utils.c:208: undefined reference to `_imp__DeleteObject@4' ../spice-common/common/.libs/libspice-common.a(ssl_verify.o): In function `inet_aton': /home/teuf/redhat/spice-gtk/spice-common/common/ssl_verify.c:38: undefined reference to `_imp__inet_addr@4' ../spice-common/common/.libs/libspice-common.a(ssl_verify.o): In function `verify_hostname': /home/teuf/redhat/spice-gtk/spice-common/common/ssl_verify.c:216: undefined reference to `_imp__inet_ntoa@4' collect2: error: ld returned 1 exit status
* Release v0.15v0.15Marc-André Lureau2012-12-212-1/+13
| | | | | | | | | | | | | | v0.15 ===== - Add HTTP Proxy support (only with glib >= 2.26) - Add "port" channel support, to allow arbitrary communication on top of spice connection - usb-redir: fix migration support - win32: various keyboard & mouse fixes - Add info message when USB dialog is empty - Fix initial black screen on some 16bits guest - Various bug fixes and improvements
* build-sys: update sym-filesMarc-André Lureau2012-12-211-1/+7
|
* session: improve open_host() clean-upMarc-André Lureau2012-12-211-6/+7
| | | | | Make sure the GSocketClient is unref when leaving the function, and not left around in some unfinished async state.
* session: do not unref() NULL connectionMarc-André Lureau2012-12-211-2/+2
| | | | | | | #3 0x00007ffff59cfb3b in g_object_unref (_object=0x0) at gobject.c:2916 #4 0x00007ffff6ea9c20 in socket_client_connect_ready (source_object=0x87ced0, result=0x8a58f0, data=0x7fffe3fffa80) at spice-session.c:1606 #5 0x00007ffff5ea1278 in g_task_return_now (task=0x8a58f0) at gtask.c:1102
* acl-helper policykit policy: Allow redir by default for console usersHans de Goede2012-12-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | This makes usb-redir a lot more userfriendly to use. This has been discussed with the security team and they are ok with it, rationale: Since we only set <allow_active> to yes, we only give raw usb access to users *physically present behind the machine*. This is ok since they already have full control over usb devices anyways, they can always just unplug the device and put it in a user controlled machine. This follows how we already grant a great deal of access to users *physically present behind the machine* including dangerous things like /dev/sg access for cd/dvd writers. And raw usb access to all devices which happen to have a userspace driver rather then an in kernel driver. Also the opening up is limited compared to the existing opening up of other devices listed above in that: 1) It will only happen on machines which have spice-glib installed 2) We are not opening up the device nodes rights automatically, as an udev rule would do. So there is no chance that any random app can start (accidentally) poking the devices. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* spicy: Fix compilation breaking due to a compiler warningHans de Goede2012-12-191-1/+6
| | | | | | | This fixes: spicy.c:1711:10: error: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Werror=unused-result] Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* controller: fix new vala warningsMarc-André Lureau2012-12-172-4/+4
| | | | | | | | | | send_msg() is done in background, use .begin controller.vala:62.3-62.10: warning: implicit .begin is deprecated foreign-menu.vala:44.3-44.10: warning: implicit .begin is deprecated foreign-menu.vala:59.3-59.10: warning: implicit .begin is deprecated foreign-menu.vala:70.3-70.10: warning: implicit .begin is deprecated Compilation succeeded - 4 warning(s)
* channel: switch to protocol 1 on error during link-timeMarc-André Lureau2012-12-171-24/+37
| | | | | | | | | | | | | | | | The Spice server doesn't wait until all the data are received by the remote before closing the socket (that would need SO_LINGER?). Under some racy conditions, the client may not have received the link reply indicating the server protocol version mismatch, which would trigger reconnection with compatible protocol. It seems to happen on local networks with Windows sockets (error WSAECONNRESET). To workaround that issue, spice-gtk can try to reconnect with protocol 1 when a socket error is encoutered during link-time. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=874698
* session: allow to connect via HTTP CONNECT proxyMarc-André Lureau2012-12-141-56/+134
| | | | | | | | | | | | | Allow to connect to a Spice server via a HTTP proxy with CONNECT method. spice-gtk will use the SPICE_PROXY environment variable, which can currently only have the following syntax: [http://]hostname[:port] This is paving the way to more proxies support (socks4/socks5). This code is now entirely sync (it was not even completely async), the following patch will make it all async again. Tested with Squid, locally only.
* Add SpiceProxy objectMarc-André Lureau2012-12-143-0/+297
| | | | | | | | | | | | Add a simple object to handle the SPICE_PROXY values. It's not clear to me whether each GIO user needs to handle the proxy configuration, or if there is a more global mechanism (via g_network_address_parse_uri()) Also, the parsing is currently very limited and only support basic HTTP proxy URI. In the future, we really want to rely on GUri or similar instead...
* Add wocky HTTP proxyMarc-André Lureau2012-12-145-0/+484
| | | | | | | | Courtesy of Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> It might make sense to include this proxy in glib/gio, but it is still missing some features according to its author, namely SSL and perhaps better CRLF.
* spice-channel: remove unnecessary g_socket_close()Marc-André Lureau2012-12-141-1/+0
|