summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* worker: remove unused preload_group_idMarc-André Lureau2015-08-111-4/+0
|
* channel: minor simplificationMarc-André Lureau2015-08-111-6/+1
|
* server: remove unused CursorDataMarc-André Lureau2015-08-111-9/+0
|
* server: use more const CoreInterfaceMarc-André Lureau2015-08-112-5/+5
|
* worker: move red_init_*() functionsMarc-André Lureau2015-08-111-8/+10
| | | | | | There is a red_init() methods, we can group all the red_init_*() calls in it rather than calling red_init() followed by all these calls in our main function.
* spice-common: codegen: ptypes.py: keep attribute names in setsUri Lublin2015-08-041-0/+0
| | | | This fixes the build on RHEL-6
* Adjust to new SpiceImageCompress nameChristophe Fergeau2015-07-2911-57/+65
| | | | | | | | This has been renamed to SpiceImageCompression in order to avoid clashes with older spice-server in the SPICE_IMAGE_COMPRESS_ namespace. This commit is a straight rename of SpiceImageCompress to SpiceImageCompression and SPICE_IMAGE_COMPRESS_ to SPICE_IMAGE_COMPRESSION_
* Add libraries such as -lm and -lpthread to the tests build line.Jeremy White2015-07-281-0/+1
| | | | | | | | | | | | | This prevents a compile error on Debian Jessie, from git, such as this: /usr/bin/ld: test_playback.o: undefined reference to symbol 'sin@@GLIBC_2.2.5' //lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line This is fairly subtle, and Debian specific. It only happens when you use autoreconf to generate a new libtool script. Debian patches that script to require an explicit setting to link with all dependent libraries. It should be harmless on other distros, and it does save us Debian guys some hassle.
* reds: Assure we don't have stale statistic files before trying to create a ↵Frediano Ziglio2015-07-201-0/+1
| | | | | | | | | | | | | | | | | new one If a previous Qemu executable is not able to delete the statistic file on the next creation with same name (statitics file are based on pid numbers so if pid get reused for another Qemu process you get the same name) it fails as you can't open a file with 0444 permissions (these are the permission used to create these files). This patch assure there are no stale file trying to remove it before the creation of the new one. As file is based on pid and name used for spice you are not deleting another file. Fixes: rhbz#1177326 Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
* server: spice_debug() messages don't need a trailing '\n'.Francois Gouget2015-07-202-3/+3
| | | | Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
* server: Weakly try to get a better latency value for the bandwidth test.Francois Gouget2015-07-201-1/+2
| | | | | | | | | NET_TEST_WARMUP_BYTES is 0 so the warmup ping is the same as the one we use to measure the latency. Even if it was not, the actual latency would be the MIN() of both anyway so we might as well use both roundtrip times to ward off latency jitter a bit. Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
* server: Don't reset the latency before showing it in the invalid net test ↵Francois Gouget2015-07-201-3/+3
| | | | | | error message. Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
* Use desired image compression for the first imagePavel Grunt2015-07-131-7/+7
| | | | | | red_marshall_image() allows to use other than QUIC compression only when auto_lz or auto_glz image compression is set. Other images don't have the problem because they are compressed using red_compress_image()
* Handle preferred image compression messagesJavier Celaya2015-06-301-0/+25
|
* Use image compress constants from spice-protocolJavier Celaya2015-06-307-23/+15
|
* server: Remove the rate_control_is_active field from MJpegEncoder.Francois Gouget2015-06-293-12/+16
| | | | It is redundant with the corresponding callbacks.
* server: Fix an incorrect time calculation.Francois Gouget2015-06-291-1/+1
| | | | Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
* HAVE_CLOCK_GETTIME is not used so remove it.Francois Gouget2015-06-291-4/+1
| | | | Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
* Lock the pixmap image cache for the entire fill_bits callSandy Stutsman2015-06-292-20/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Locking the individual calls that access the pixmap cache in fill_bits is not adequately thread safe. Often a windows guest with multiple monitors will be sending the same image via different threads. Both threads can be in fill_bits at the same time making changes to the cache for the same image. This can result in images being deleted before all the client channels are finished with them or with the same image being send multiple times. Here's what can happen with out the lock in fill_bits On the server in red_worker.c:fill_bits Thread 1 calls pixmap_cache_hit for Image A and finds it isn't in cache Thread 2 calls pixmap_cache_hit for Image A and finds it isn't in cache Thread 1 adds Image 1 to pixmap_cache (1x) Thread 2 adds Image 1 to pixmap_cache (2x) On the client Channel 1 adds Image A to image_cache (1x) Channel 2 replaces Image A in image_cache (1x) On server Thread 1 sends Image A rendering commands Thread N removes Image A from pixmap_cache (image remains - 1x) Thread 2 sends Image A rendering commands On client Channe1 renders from Image A Channel N removes Image a from image_cache (image is completely removed) Channel2 render command hangs waiting for Image A
* server: allows to set maximum monitorsFrediano Ziglio2015-06-265-5/+26
| | | | | | | | | | | | | spice-server will attempt to limit number of monitors. Guest machine can send monitor list it accepts. Limiting the number sent by guest will limit the number of monitors client will try to enable. The guest usually see client monitors enabled and start using it so not seeing client monitor won't try to enable more monitor. In this case the additional monitor guest can support will always be seen as heads with no attached monitors. This allows limiting monitors number without changing guest drivers. Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
* build-sys: Fix build with automake < 1.13Christophe Fergeau2015-06-261-1/+2
| | | | | | AC_CONFIG_MACRO_DIRS is not available with older automake versions, which causes autogen.sh failures on RHEL6. m4_include() can be used instead.
* mjpeg: Convert rate control checks to asserts in encoderFrancois Gouget2015-06-221-6/+3
| | | | | | | | The checks would lead the reader to think these functions can be called when bit rate control is off when in fact they are only called when it is active. Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
* server: Refresh the input fps every 5 second, without a timer.Francois Gouget2015-06-221-30/+15
| | | | Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
* build-sys: Use spice-common m4 macro for lz4Christophe Fergeau2015-06-222-11/+1
| | | | This will allow to share this detection code with spice-gtk.
* build-sys: Use spice-common m4 macro for openglChristophe Fergeau2015-06-221-29/+4
| | | | This factorizes a bit of configure.ac m4 code.
* build-sys: Use spice-common m4 macro for smartcardChristophe Fergeau2015-06-221-18/+6
| | | | | | Besides the code factorization, this will allow smartcard support to be automatically enabled if libcacard is present and --disable-smartcard is not used.
* reds: increase listening socket backlogMarc-André Lureau2015-06-171-1/+1
| | | | | | | | | | | | | | | With a TCP socket, the backlog doesn't seem to matter much, perhaps because of latency or underlying protocol behaviour. However, on UNIX socket, it is fairly easy to reach the backlog limit and the client will get an EAGAIN error (but not ECONNREFUSED as stated in listen(7)) that is not easy to deal with: attempting to reconnect in a loop might busy-loop forever as there are no guarantee the server will accept new connections, so it will be inherently racy. Typically, Spice server can easily have up to 15 concurrent incoming connections that are established during initialization of the session. To improve the situation, raise the backlog limit to the default maximum system value, which is 128 on Linux.
* Add password length checkCédric Bosdonnat2015-06-161-0/+2
| | | | Don't allow setting a too long password.
* Use spice_malloc instead of mallocFrediano Ziglio2015-06-161-4/+2
| | | | | | | | Do not just check and give warning before crashing the program accessing a NULL pointer but use spice_malloc which exits with a proper message. Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
* Remove duplicate streaming enumerationJonathon Jongsma2015-06-154-17/+10
| | | | | | There is already a enumeration in a public header that defines the different streaming options, so there's no need to duplicate that enumeration internally. Just use the public enum values.
* Use AS_HELP_STRING for configure optionsJonathon Jongsma2015-06-151-15/+16
|
* Fix typo in commentFrediano Ziglio2015-06-111-1/+1
| | | | Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
* Use MIN macro to compute a minimumFrediano Ziglio2015-06-111-1/+1
| | | | Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
* LZ4: warn if trying to set lz4 but not supportedJavier Celaya2015-06-111-0/+8
|
* server: Remove an unused structure.Francois Gouget2015-06-091-10/+0
|
* sound: do not modify client state on migrationMarc-André Lureau2015-06-041-1/+4
| | | | | | | | | | | | | During migration, a volume jump is observed by the client. This is due to qemu setting up destination server with default sound state, and the server sending it after the client is connected. The volume is later restored after migration is finished so there is no need to send this default state values on connection. Tested with both AC97 & HDA devices. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1012868
* build-sys: Pass --enable-python-checks when running autogen.shChristophe Fergeau2015-04-231-1/+1
| | | | | This will tell spice-common configure.ac to test for the availability of python-six when building from git.
* Update spice-common submoduleChristophe Fergeau2015-04-231-0/+0
| | | | | | | | This fixes a few issues with older python-six versions: Christophe Fergeau (2): configure.ac: Check for needed python modules for git builds codegen: Use six.PY3 rather than six.PY2
* build-sys: Replace cpu detection error with warningChristophe Fergeau2015-04-101-11/+7
| | | | | | | | configure.ac currently errors out when trying to build on non-x86/non-ARM CPUs. Since the previous commits improved big endian support a lot, this commit replaces the error with a warning at configure time to make testing on big endian platforms easier.
* build-sys: Remove unused 'X86_64' conditionalChristophe Fergeau2015-04-101-1/+0
| | | | | X86_64 was defined as an AM_CONDITIONAL, but then nothing was using it. This commit gets rid of it.
* ppc: Fix glz magic endianessChristophe Fergeau2015-04-101-1/+2
| | | | | This is a modified version of a patch initially by Erlon R. Cruz <erlon.cruz@br.flextronics.com>
* ppc: Fixing endianness for channel messagesChristophe Fergeau2015-04-101-10/+10
| | | | | This is a modified version of a patch initially from Erlon R. Cruz <erlon.cruz@br.flextronics.com>
* ppc: Update spice-common for endianness-related fixesChristophe Fergeau2015-04-101-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Alexander Wauck (1): Make spice_codegen.py work on both Python 2 and 3 Christophe Fergeau (17): Remove unused header file build-sys: Remove unused X check build-sys: Remove unused win32 check build-sys: Remove unused WITH_SMARTCARD conditional build-sys: Small cleanup of AM_CPPFLAGS build-sys: Add fallback for AS_VAR_APPEND build-sys: Move posix checks to a separate m4 macro build-sys: Move smartcard check to m4 macro build-sys: Move celt check to m4 macro build-sys: Move opus check to m4 macro build-sys: Move opengl check to m4 macro build-sys: Move pixman check to m4 macro Remove unused 'invers' arg from canvas_get_* Remove redundant #if defined(SW_CANVAS_CACHE) || defined(SW_CANVAS_IMAGE_CACHE) Remove another redundant (SW_CANVAS_CACHE) || (SW_CANVAS_IMAGE_CACHE) #ifdef Get rid of SW_CANVAS_IMAGE_CACHE ssl_verify: Move wincrypt.h related #ifdef closer to the include Erlon Cruz (2): ppc: Fix lz magic endianness ppc: build-sys: Add big-endian support Fabiano Fidêncio (1): Fix typo in pixman_image_get_stride() function Javier Celaya (6): LZ4: Fix output buffer size LZ4: Adjust reading the top_down flag LZ4: Decode the image format from the stream LZ4: Fix the row alignment when it is not on a 32bit boundary LZ4: Add support for 24bit pixman surfaces LZ4: Do not include arpa/inet.h in Windows builds Victor Toso (1): common: fix build with mingw
* ppc: Fix endianness handling in initial SPICE connectionChristophe Fergeau2015-04-102-17/+46
| | | | | | | | | | | | This commit fixes enough endianness issues that it's possible to connect to a spice-server/qemu running on a big-endian box with a client running on a little-endian machine. I haven't tested more than getting to the bios/bootloader and typing a bit on the keyboard as I did not manage to boot a distro afterwards :( This is based on patches send by Erlon R. Cruz <erlon.cruz@br.flextronics.com>
* m4: WARN FLAGS: Drop -Wenum-compareUri Lublin2015-03-151-0/+3
| | | | | | | | | | | | My RHEL-6 gcc (4.4.7) complains a lot about it: cc1: warning: command line option "-Wenum-compare" is valid for C++/ObjC++ but not for C For older gcc version (e.g. 4.4.7), man gcc says -Wenum-compare is "C++ and Objective-C++ only". For newer gcc (e.g. 4.9.2), man gcc says "In C this warning is enabled by -Wall."
* Do not compress bitmaps on UNIX socketFabiano Fidêncio2015-02-251-1/+2
| | | | On UNIX socket do not perform unnecessary image compression
* tests: Fix build on HurdFabiano Fidêncio2015-02-241-0/+4
| | | | | | | As PATH_MAX is not defined on Hurd, let's check for it and define whenever it is necessary. https://bugs.freedesktop.org/show_bug.cgi?id=74313
* char-device: spice_char_device_write_to_device: protect against recursionUri Lublin2015-02-081-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes Spice's smart card support and is related to commit 697f3214fd16adcd524456003619f7f44ddd031b. Reported-by: Swapna Krishnan <skrishna@redhat.com> Recursion is now possible starting with spice_char_device_write_to_device going through spice_char_device_wakeup (after going through qemu), calling again to spice_char_device_write_to_device. The protecting code is the same as the one protecting the read path. This function call loop makes the program to abort with the following messages: usb-ccid: chardev: unexpected message of type 3000000 qemu: qemu_mutex_lock: Resource deadlock avoided Backtrace: (gdb) bt * #0 0x00007ffff3fc78c7 in raise () from /lib64/libc.so.6 * #1 0x00007ffff3fc952a in abort () from /lib64/libc.so.6 * #2 0x0000555555969a95 in error_exit (err=35, * msg=0x5555559f8c90 <__func__.5119> "qemu_mutex_lock") * at util/qemu-thread-posix.c:48 * #3 0x0000555555969b82 in qemu_mutex_lock (mutex=0x5555562c4d60) * at util/qemu-thread-posix.c:79 * #4 0x0000555555714771 in qemu_chr_fe_write (s=0x5555562c4d60, * buf=0x7fffffffd2a0 "", len=12) at qemu-char.c:219 * #5 0x000055555586be49 in ccid_card_vscard_send_msg (s=0x5555565c5f80, * type=VSC_Error, reader_id=0, payload=0x7fffffffd2e0 "", length=4) * at hw/usb/ccid-card-passthru.c:75 * #6 0x000055555586bf00 in ccid_card_vscard_send_error (s=0x5555565c5f80, * reader_id=0, code=VSC_GENERAL_ERROR) at * hw/usb/ccid-card-passthru.c:91 * #7 0x000055555586c559 in ccid_card_vscard_handle_message ( * card=0x5555565c5f80, scr_msg_header=0x5555565c6008) * at hw/usb/ccid-card-passthru.c:254 * #8 0x000055555586c72f in ccid_card_vscard_read (opaque=0x5555565c5f80, * buf=0x5555565034b0 "", size=12) at hw/usb/ccid-card-passthru.c:289 * #9 0x00005555557149db in qemu_chr_be_write (s=0x5555562c4d60, * buf=0x5555565034b0 "", len=12) at qemu-char.c:305 * #10 0x000055555571cde5 in vmc_write (sin=0x5555562c4e78, * buf=0x5555565034b0 "", len=12) at spice-qemu-char.c:41 * #11 0x00007ffff4fa86aa in spice_char_device_write_to_device ( * dev=0x55555657f210) at char_device.c:462 * #12 0x00007ffff4fa9b48 in spice_char_device_wakeup (dev=0x55555657f210) * at char_device.c:862 * #13 0x00007ffff4ff7658 in spice_server_char_device_wakeup * (sin=0x5555562c4e78) at reds.c:2955 * #14 0x000055555571d1d2 in spice_chr_write (chr=0x5555562c4d60, * buf=0x7fffffffd560 "", len=12) at spice-qemu-char.c:189 * #15 0x0000555555714789 in qemu_chr_fe_write (s=0x5555562c4d60, * buf=0x7fffffffd560 "", len=12) at qemu-char.c:220 * #16 0x000055555586be49 in ccid_card_vscard_send_msg (s=0x5555565c5f80, * type=VSC_Error, reader_id=0, payload=0x7fffffffd5a0 "", length=4) * at hw/usb/ccid-card-passthru.c:75 * #17 0x000055555586bf00 in ccid_card_vscard_send_error * (s=0x5555565c5f80, * reader_id=0, code=VSC_SUCCESS) at hw/usb/ccid-card-passthru.c:91 * #18 0x000055555586c4fc in ccid_card_vscard_handle_message ( * card=0x5555565c5f80, scr_msg_header=0x5555565c6008) * at hw/usb/ccid-card-passthru.c:242 * #19 0x000055555586c72f in ccid_card_vscard_read (opaque=0x5555565c5f80, * buf=0x5555565034b0 "", size=12) at hw/usb/ccid-card-passthru.c:289 * #20 0x00005555557149db in qemu_chr_be_write (s=0x5555562c4d60, * buf=0x5555565034b0 "", len=12) at qemu-char.c:305 * #21 0x000055555571cde5 in vmc_write (sin=0x5555562c4e78, * buf=0x5555565034b0 "", len=12) at spice-qemu-char.c:41 * #22 0x00007ffff4fa86aa in spice_char_device_write_to_device ( * dev=0x55555657f210) at char_device.c:462 * #23 0x00007ffff4fa8d37 in spice_char_device_write_buffer_add ( * dev=0x55555657f210, write_buf=0x555556501f70) at char_device.c:597 * #24 0x00007ffff501142d in smartcard_channel_write_to_reader ( * write_buf=0x555556501f70) at smartcard.c:669 * #25 0x00007ffff501034c in smartcard_char_device_notify_reader_add ( * st=0x55555657ef00) at smartcard.c:335 * #26 0x00007ffff50112b3 in smartcard_add_reader (scc=0x555556493ee0, * name=0x5555565023cc "E-Gate 0 0") at smartcard.c:642 * #27 0x00007ffff50118d2 in smartcard_channel_handle_message ( * rcc=0x555556493ee0, type=101, size=22, msg=0x5555565023c0 "\003") * at smartcard.c:757 * #28 0x00007ffff4fbc168 in red_peer_handle_incoming * (stream=0x555556588250, handler=0x555556497ff0) at red_channel.c:308 * #29 0x00007ffff4fbc231 in red_channel_client_receive * (rcc=0x555556493ee0) at red_channel.c:326 * #30 0x00007ffff4fc0019 in red_channel_client_event (fd=59, event=1, * data=0x555556493ee0) at red_channel.c:1574 * #31 0x00005555558b6076 in watch_read (opaque=0x5555565002f0) * at ui/spice-core.c:101 * #32 0x00005555558e8d48 in qemu_iohandler_poll (pollfds=0x5555562b7630, * ret=2) at iohandler.c:143 * #33 0x00005555558e89a4 in main_loop_wait (nonblocking=0) at * main-loop.c:495 * #34 0x00005555557219b0 in main_loop () at vl.c:1794 * #35 0x0000555555729257 in main (argc=40, argv=0x7fffffffddc8, * envp=0x7fffffffdf10) at vl.c:4350
* LZ4: Send the original format with the compressed dataJavier Celaya2015-02-033-6/+7
|
* LZ4: Do not reverse bottom-up imagesJavier Celaya2015-02-033-24/+14
| | | | | | Reversing the bottom-up images in the server is not needed since Pixman, in the client, is able to deal with them. As a result, the previous code was more complex and wrong. This commit fixes and cleans it.