| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Use AC_CONFIG_HEADER instead of deprecated AM_CONFIG_HEADER.
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
|
|
|
|
| |
obtaining a fix related to palettes caching (fedora 875348, 826036)
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
open_host->error is only set if we try to use a proxy. Let´s make that
more clear.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
| |
Signed-off-by: Dunrong Huang <riegamaths@gmail.com>
Signed-off-by: mathslinux <riegamaths@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
Make sure the GSocketClient is unref when leaving the function, and
not left around in some unfinished async state.
|
|
|
|
|
|
|
| |
#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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 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...
|
|
|
|
|
|
|
|
| |
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.
|
| |
|