summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Update spice-commonMarc-André Lureau2014-07-231-0/+0
|
* Don't use _GET_PRIVATE all the timeFabiano Fidêncio2014-07-2310-160/+199
| | | | | | | | Let's make use of the priv members in the structs, which are much much faster. Also, to keep the type-safety, the SPICE_IS_* macros were added in the public methods affected by this patch. Patch based on an old patch from Alexander Larsson (alexl@redhat.com).
* Prefer using g_malloc0()/g_free()Fabiano Fidêncio2014-07-2315-44/+43
| | | | | | | | | | As we already depend on GLib, let's use g_{malloc,new}0() instead of the standard malloc() or the spice_{malloc,new}*() and g_free() instead of the standard free() when possible. Memory allocated by other libraries using malloc() should still be freed by free(). As a side effect of the changes, we are muting a few warnings caught by coverity.
* Fix "REVERSE_INULL" caught by coverityFabiano Fidêncio2014-07-231-1/+1
|
* g_type_init() is deprecated in GLib 2.36Fabiano Fidêncio2014-07-235-0/+10
|
* session: prefix proxy lookup errorsMarc-André Lureau2014-07-071-0/+1
| | | | | | | Proxy errors are already reported with G_IO_ERROR_PROXY messages, however proxy name lookup error can be more detailed. https://bugzilla.redhat.com/show_bug.cgi?id=1115986
* proxy: use http proxy by default if no scheme givenMarc-André Lureau2014-06-171-1/+2
| | | | | SPICE_PROXY used to accept URI without scheme, falling back on http/3128. This is a regression introduced with 5dcab09ac
* Remove coroutine trampolinesMarc-André Lureau2014-06-1012-506/+122
| | | | Use va_list instead of an ugly trampoline hack
* usbredir: don't use emit_main_context() for non-signal codeMarc-André Lureau2014-06-101-25/+24
| | | | The following patch deprecates the signal helper code
* README: add vala-tools build-depMarc-André Lureau2014-05-221-1/+1
|
* Add missing GIO_LIBS to libspice-client-glibsTiziano Müller2014-05-221-0/+1
| | | | | If spice-gtk is built without PHODAV, libgio is missing from the list of libraries to link against, causing undefined symbols for all gio functions.
* Do not depend on libsoup directlyTiziano Müller2014-05-211-3/+0
| | | | | | The libsoup-dependency is not directly used but comes in as a dependency of phodav and phodav has libsoup correctly recorded in its pkg-config file.
* Introduce --enable/disable-webdav optionTiziano Müller2014-05-211-4/+17
| | | | | This makes the phodav dependency configureable. And name it after the corresponding channel.
* Revert "clipboard: prevent reentering main loop if main channel is busy"Marc-André Lureau2014-05-202-12/+0
| | | | | | | | | | | This change broke primary clipboard copying from remote to client, on win32. There is a pending ::clipboard-grab emission, so the channel is not idle, and it will handle emission and resume in the inner loop without issue. We should really handle this situation with care though, and the best would be to teach gtk+ to do async clipboard request. This reverts commit e3efa8cec51045d87a14a7e4f921c24ad5caffb1.
* clipboard: check that clipboard request does not belong to remoteMarc-André Lureau2014-05-151-0/+3
| | | | Check clipboard owner, to avoid cyclic dependency of clipboard requests.
* clipboard: prevent reentering main loop if main channel is busyMarc-André Lureau2014-05-152-0/+12
| | | | | | | | | | | | | | | | The main channel must be idle to avoid entering the nested loop, or it will never reach the condition to leave it. This should not happen. It can happen currently when the remote sends a clipboard request while the clipboard is grabbed by the remote. In this case, while the clipboard-request signal is emitted by main channel, the clipboard_get() loop is entered, but the main coroutine will not be woken up to proceed with the request, the main channel will remain "frozen" and it won't be possible to leave cleanly from the inner loop. The application appears to be frozen, because it can't quit properly. Related to: https://bugzilla.redhat.com/show_bug.cgi?id=1083489
* Include glib-compat.h in spice-option.cChristophe Fergeau2014-04-291-0/+1
| | | | Commit 8c89485 added a call to g_clear_pointer().
* option: check that default ca-file existsMarc-André Lureau2014-04-241-0/+2
| | | | Don't set default ca-file path if the file doesn't exists.
* option: use more portable default ca-file pathMarc-André Lureau2014-04-231-1/+1
| | | | | If no CA path is given, a default one is set. Use g_build_filename() to set a more portable and valid default path.
* Fix leak in spice_gtk_session_sync_keyboard_modifiers()Christophe Fergeau2014-04-171-0/+1
| | | | | The list of channels returned by spice_session_get_channels() must be freed after use.
* display: signal primary-destroy when clearing all surfacesMarc-André Lureau2014-04-151-0/+6
| | | | | | | | When destroying the primary surface, we need to signal it, since listeners might be referencing the data pointer. Currently, this only happens during channel finalize(). This could help with rhbz#1082555.
* gtk-session: always sync modifiers for client eventsMarc-André Lureau2014-04-151-8/+11
| | | | | | | | The channel state is not synchronous. It may happen that we want to set and unset quickly a modifier, but the guest modifier state hasn't been updated yet, and will still be seen as unset, preventing the last unset change.
* gtk-session: s/g_debug/CHANNEL_DEBUGMarc-André Lureau2014-04-151-2/+3
|
* Include gtk-compat.h in spice-gtk-session.cChristophe Fergeau2014-04-151-0/+1
| | | | | GDK_IS_X11_DISPLAY is not available on gtk+ 2.x, but it already has a fallback definition in gtk-compat.h
* Gather gtk+ compatibility code in a single fileChristophe Fergeau2014-04-155-42/+60
| | | | | | | There are gtk+ version checks in several source files to add compatibility implementations of gtk3 functions not available in gtk2. This commit gathers all of them in a gtk-compat.h header, similar to what is done for glib-compat.h
* Add compat implementation of g_queue_free_full()Christophe Fergeau2014-04-152-0/+25
| | | | This was introduced in glib 2.32 and the webdav channel uses it.
* Use correct printf format modifier for gssizeChristophe Fergeau2014-04-081-1/+1
| | | | | | | | | This fixes this warning/error: channel-webdav.c: In function 'demux_to_client': channel-webdav.c:318:5: error: format '%ld' expects argument of type 'long int', but argument 5 has type 'gssize' [-Werror=format=] CHANNEL_DEBUG(self, "pushing %ld to client %p", size, client);
* Add man pageChristophe Fergeau2014-04-084-1/+213
| | | | | Spice-GTK provides SPICE-specific command line options. This man page describes these options as well as the format of SPICE URIs.
* Use GdkKeymap to listen for keyboard modifier changesJonathon Jongsma2014-04-031-0/+9
| | | | | | | Connect to the GdkKeymap::state-changed signal to detect when the client keyboard modifiers have changed. This keeps the client and the guest in sync even when the SpiceDisplay widget isn't focused. New values are only sent down to the guest if the new value is different than the current value.
* Ensure keyboard modifiers are synchronized properlyJonathon Jongsma2014-04-033-89/+100
| | | | | | | | | | | | | | | | | | | | | | | In certain circumstances, the keyboard modifiers get out-of-sync between the guest and the client. This is easy to reproduce with the following steps: - launch virt-viewer with a guest that is not running - start the guest - while guest is booting, enable CAPS LOCK on the client - after guest finishes booting, it will set its modifiers to a default value (e.g. numlock on, capslock off) - now capslock is OFF in the guest, but ON in the client - toggle caps lock - now capslock is ON in the guest, but OFF in the client This moves the responsibility for synchronizing client and guest modifiers into SpiceGtkSession. It can't be handled easily within the SpiceDisplay widget since there can be multiple display widgets for each inputs channel. A new function (spice_gtk_session_sync_keyboard_modifiers()) was added so that synchronization can be triggered manually if desired. But it also registers a signal handler for the InputsChannel::inputs-modifiers signal to detect when the guest has changed its modifiers. The signal handler simply overrides the guests modifiers and sets them back to the value from the client.
* Update NEWS for v0.25v0.25Marc-André Lureau2014-04-021-0/+7
|
* Make phodav an optional external dependencyMarc-André Lureau2014-04-028-11/+31
| | | | | Now that upstream provides a stable/versioned API, it will be easier to deal with than with submodules.
* build-sys: re-organize summary to show major info firstMarc-André Lureau2014-04-021-2/+2
|
* build-sys: add missing soup substMarc-André Lureau2014-04-021-0/+3
|
* Fix missing SPICE_GTK_MICRO_VERSION valueJonathon Jongsma2014-03-311-1/+1
| | | | | | | | | configure.ac tries to assign a default value of 0 to the micro version if it's empty, but the shell variable assignemnt doesn't work because there's whitespace around the '=' sign. This results in SPICE_GTK_MICRO_VERSION being defined to (), which causes a compilation failure in files that include it.
* Update NEWS for v0.24v0.24Marc-André Lureau2014-03-252-1/+2
|
* Update phodavMarc-André Lureau2014-03-251-0/+0
|
* Advertise SASL cap from clientChristophe Fergeau2014-03-251-0/+3
| | | | | | | | | | | | | | | A client setting this capability indicates to the server that it's able to handle SASL authentication, and it also indicates that if SASL is to be used for authentication, then it won't expect a valid 'pub_key' field in SpiceLinkReply. The reason for making guarantees about not looking at the pub_key field is that its presence and size is hardcoded in the protocol, but in some hardened setups (using fips mode), generating a RSA 1024 bit key as expected is forbidden and fails. With this new capability, the server knows the client will be able to handle SASL if needed, and can skip the generation of the key altogether. This means that on the setups described above, SASL authentication has to be used.
* webdav: use some more explicit namesMarc-André Lureau2014-03-201-9/+10
| | | | | Address Alon's review from http://lists.freedesktop.org/archives/spice-devel/2014-March/016383.html
* Start NEWS fileMarc-André Lureau2014-03-191-0/+15
|
* session: add shared-dir property and optionMarc-André Lureau2014-03-194-3/+62
| | | | | | Allow to specify the shared directory from the command line, or at runtime via properties. (still default to xdg public share, if none specified)
* Add webdav channelMarc-André Lureau2014-03-1918-4/+851
| | | | | | | | | | | | | | | | | | | See spice-common for protocol details. phodav, a webdav server library, is imported thanks to a submodule, until this project has a stable API and releases. The webdav channel is reponsible for handling port events and multiplexing the request streams. Extra care has been made to avoid blocking and to enable some fairness between concurrent streams, however this has been particularly tricky and is likely to have some issues left. The webdav server is run in a seperate thread, using libsoup. The client communication is done via a local tcp socket, but protected to only accept local connection and with a pretty strong password. The home directory is exported for the remote to browse, which seems to be a sensible default atm.
* mingw64: Fix gssize printf-format warningsChristophe Fergeau2014-03-182-5/+8
| | | | | | | | | | | | | | | When building with mingw64, several warnings about using the wrong format specifier for gssize/gsize occur similar to: win-usb-dev.c: In function 'g_udev_client_list_devices': win-usb-dev.c:145:21: error: format '%i' expects argument of type 'int', but argument 7 has type 'gssize' [-Werror=format=] name, errstr, rc); This commit makes use of the G_GSIZE_FORMAT/G_GSSIZE_FORMAT macros provided by glib to silence these warnings. I've checked that this does not introduce new warnings on linux and mingw32 builds.
* Fix spice_display_get_pixbuf() with offset areaMarc-André Lureau2014-03-141-2/+3
| | | | | | | | | | | | | | | Fix screenshot of secondary displays, with an area position != (0,0). This has never been working correctly since the surface display "area" was introducted in: commit e3bb7b1cfd162fcb8943e9d582dab43eeec6ce41 Author: Marc-André Lureau <marcandre.lureau@redhat.com> Date: Tue Jun 12 19:24:47 2012 +0200 display: learn to restrict display to an area https://bugzilla.redhat.com/show_bug.cgi?id=1029761
* Silence some gcc warningsMarc-André Lureau2014-03-141-1/+1
| | | | | | | | | cc1: warnings being treated as errors spice-uri.c: In function ‘spice_uri_parse’: spice-uri.c:105: error: ‘saveptr’ may be used uninitialized in this function [-Wuninitialized] spice-uri.c:105: error: ‘saveptr2’ may be used uninitialized in this function [-Wuninitialized]
* sasl: Rework memory handling in spice_channel_perform_auth_sasl()Christophe Fergeau2014-03-131-10/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | While looking at the SASL code, I noticed some memory leaks in error paths. This commit adds a cleanup: block to free some of the memory dynamically allocated in that function, and remove the corresponding g_free() from the regular code flow. This should ensure that both the regular path and the error paths free the same memory. This fixes at least this 'mechlist' leak which I got during regular SASL PLAIN authentication: ==3452== 6 bytes in 1 blocks are definitely lost in loss record 140 of 11,706 ==3452== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.s ==3452== by 0x35BAC4EE6E: g_malloc (gmem.c:104) ==3452== by 0x5BF7CAA: spice_channel_perform_auth_sasl (spice-channel.c:1440) ==3452== by 0x5BF9033: spice_channel_recv_link_msg (spice-channel.c:1727) ==3452== by 0x5BFAECD: spice_channel_coroutine (spice-channel.c:2348) ==3452== by 0x5C35D6D: coroutine_trampoline (coroutine_ucontext.c:63) ==3452== by 0x5C35A1B: continuation_trampoline (continuation.c:51) ==3452== by 0x31342479BF: ??? (in /usr/lib64/libc-2.18.so) ==3452== by 0x75F2940591224CFF: ??? ==3452== by 0xE756E5F: ??? ==3452== by 0xE7589BF: ??? ==3452== by 0xFFEFFF78F: ??? ==3452== by 0x5BFCD92: g_io_wait_helper (gio-coroutine.c:43) =
* Make sure config.h is included first in all .c filesChristophe Fergeau2014-03-1326-15/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is recommended by autoconf documentation http://nondot.org/sabre/Mirrored/autoconf-2.12/autoconf_3.html#SEC15 and some #defines in config.h can change what happens in system headers, so config.h has to be included first. The only file which does not get this treatment is gtk/spice-client-gtk-module.c as this breaks the build on gtk+2: CC SpiceClientGtk_la-spice-client-gtk-module.lo In file included from /usr/include/python2.7/pyconfig.h:6:0, from /usr/include/python2.7/Python.h:8, from /usr/include/pygtk-2.0/pygobject.h:5, from spice-client-gtk-module.c:20: /usr/include/python2.7/pyconfig-64.h:1182:0: error: "_POSIX_C_SOURCE" redefined [-Werror] #define _POSIX_C_SOURCE 200112L ^ In file included from /usr/include/limits.h:25:0, from /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/limits.h:168, from /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/syslimits.h:7, from /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/limits.h:34, from /usr/lib64/glib-2.0/include/glibconfig.h:11, from /usr/include/glib-2.0/glib/gtypes.h:34, from /usr/include/glib-2.0/glib/galloca.h:34, from /usr/include/glib-2.0/glib.h:32, from /usr/include/glib-2.0/gobject/gbinding.h:30, from /usr/include/glib-2.0/glib-object.h:25, from ./glib-compat.h:24, from ../config.h:201, from spice-client-gtk-module.c:18: /usr/include/features.h:228:0: note: this is the location of the previous definition # define _POSIX_C_SOURCE 200809L ^ cc1: all warnings being treated as errors
* build-sys: Fix setting of SPICE_GTK_MICRO_VERSIONChristophe Fergeau2014-03-101-1/+1
| | | | | | | | After e124a3b2e which added the SPICE_GTK_CHECK_VERSION macro, a non-fatal './configure: line 15251: x24: command not found' appears in configure output. This is because [ ] is not interpreted as the 'test' command by autoconf, but is rather used as a way to quote configure.ac content. This commit replaces the use of [] with a more typical AS_IF.
* Add missing #include "glib-compat.h"Christophe Fergeau2014-02-272-0/+2
| | | | | | wocky-http-proxy.c and vmcstream.c make use of functions that were not available in glib 2.26 so we need fallback for them through glib-compat.h or spice-gtk won't build with older glibs.
* display: fix crash when releasing primary surfaceMarc-André Lureau2014-02-251-1/+1
| | | | | | | | | | | | | | | | | Since 1fcaaa15f8aca362f9e6afc87fb43cfbccf6ff62, display_surface is allocated using gslice. However MSG_DISPLAY_MODE handler didn't allocate using GSlice. This can eventually lead to a crash when freeing, such as: Thread no. 1 (6 frames) #2 g_slice_free1 at gslice.c:1097 #3 iter_remove_or_steal at ghash.c:787 #4 clear_surfaces at /lib64/libspice-client-glib-2.0.so.8 #5 spice_display_channel_finalize at /lib64/libspice-client-glib-2.0.so.8 #7 spice_channel_delayed_unref at /lib64/libspice-client-glib-2.0.so.8 #12 gtk_main at gtkmain.c:1158 https://bugzilla.redhat.com/show_bug.cgi?id=1069546