Commit Graph

1962 Commits

Author SHA1 Message Date
Victor Toso
fd75632a8f migration_protocol: use SPICE_MAGIC_CONST
spice-protocol has a new define to create the magic constants, let's use
that.
2015-08-20 10:54:56 +01:00
Victor Toso
94e55bce42 red_parse_qxl: Do not compute abs unsigned int
SpiceBitmap's stride is uint32_t.

from clang:
red_parse_qxl.c:452:41: error: taking the absolute value of unsigned
type 'uint32_t' (aka 'unsigned int') has no effect

bitmap_size = red->u.bitmap.y * abs(red->u.bitmap.stride);
                                ^
2015-08-12 12:29:52 +02:00
Alon Levy
a5ec6a2923 server/inputs_channel: Cope with NULL keyboard in release_keys()
This fixes a test_display_no_ssl segfault on client disconnect when
the keyboard was never initialized.
2015-08-12 10:28:57 +02:00
Victor Toso
648808e282 red_parse_qxl: remove unused variable 2015-08-11 17:24:38 +02:00
Jonathon Jongsma
a58e123c4b Remove unused struct RedsOutItem 2015-08-11 17:24:36 +02:00
Jonathon Jongsma
73fafae5c7 RedChannel: remove unused BufDescriptor struct 2015-08-11 17:24:36 +02:00
Christophe Fergeau
4243d2a645 Remove unused snd_get_playback_compression() method 2015-08-11 17:24:36 +02:00
Christophe Fergeau
295dadbf94 Fix typo in comment in char_device.h 2015-08-11 17:24:36 +02:00
Jonathon Jongsma
3c39371b57 Fix typo in comments 2015-08-11 17:24:36 +02:00
Jonathon Jongsma
ff97799487 Move RedsMigSpice to main-channel.h
This is the place that needs the complete type definition. If it is
defined in reds.h, it can create circular references.
2015-08-11 17:24:36 +02:00
Jonathon Jongsma
0eaf34c04b Cleanup: move static function declarations out of header
It doesn't make much sense to have static function declarations in a
header, even a private header. So move them down into the source file.
2015-08-11 17:24:36 +02:00
Marc-André Lureau
e4bbdc3391 worker: remove unused preload_group_id 2015-08-11 17:24:36 +02:00
Marc-André Lureau
26dc05edc4 channel: minor simplification 2015-08-11 17:24:36 +02:00
Marc-André Lureau
6a38af37fc server: remove unused CursorData 2015-08-11 17:24:36 +02:00
Marc-André Lureau
3da1e1ed0c server: use more const CoreInterface 2015-08-11 17:24:36 +02:00
Marc-André Lureau
e3187ebd29 worker: move red_init_*() functions
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.
2015-08-11 17:21:59 +02:00
Uri Lublin
7c7567292f spice-common: codegen: ptypes.py: keep attribute names in sets
This fixes the build on RHEL-6
2015-08-04 20:36:04 +03:00
Christophe Fergeau
de66161c6e Adjust to new SpiceImageCompress name
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_
2015-07-29 17:40:48 +02:00
Jeremy White
04d9d79013 Add libraries such as -lm and -lpthread to the tests build line.
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.
2015-07-28 10:12:46 -05:00
Frediano Ziglio
40537f6a3e reds: Assure we don't have stale statistic files before trying to create a 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>
2015-07-20 11:19:28 +02:00
Francois Gouget
660bee0e93 server: spice_debug() messages don't need a trailing '\n'.
Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
2015-07-20 11:15:55 +02:00
Francois Gouget
212ee28a64 server: Weakly try to get a better latency value for the bandwidth test.
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>
2015-07-20 11:15:55 +02:00
Francois Gouget
1a8a7df286 server: Don't reset the latency before showing it in the invalid net test error message.
Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
2015-07-20 11:15:55 +02:00
Pavel Grunt
071647780d Use desired image compression for the first image
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()
2015-07-13 11:52:09 +02:00
Javier Celaya
c914e96fb4 Handle preferred image compression messages 2015-06-30 16:49:29 +02:00
Javier Celaya
22c40b9d1f Use image compress constants from spice-protocol 2015-06-30 16:49:29 +02:00
Francois Gouget
aa22138d05 server: Remove the rate_control_is_active field from MJpegEncoder.
It is redundant with the corresponding callbacks.
2015-06-29 18:04:12 +02:00
Francois Gouget
a45ff74b3d server: Fix an incorrect time calculation.
Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
2015-06-29 17:50:26 +02:00
Francois Gouget
4ad3025249 HAVE_CLOCK_GETTIME is not used so remove it.
Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
2015-06-29 17:50:26 +02:00
Sandy Stutsman
e4a42e50c2 Lock the pixmap image cache for the entire fill_bits call
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
2015-06-29 13:21:14 +02:00
Frediano Ziglio
6d4e58f70d server: allows to set maximum monitors
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>
2015-06-26 16:17:42 +02:00
Christophe Fergeau
878d81dae4 build-sys: Fix build with automake < 1.13
AC_CONFIG_MACRO_DIRS is not available with older automake versions,
which causes autogen.sh failures on RHEL6. m4_include() can be used
instead.
2015-06-26 16:01:34 +02:00
Francois Gouget
f017d7a421 mjpeg: Convert rate control checks to asserts in encoder
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>
2015-06-22 19:47:58 +02:00
Francois Gouget
03af3f382d server: Refresh the input fps every 5 second, without a timer.
Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
2015-06-22 19:47:58 +02:00
Christophe Fergeau
e0a5cb591c build-sys: Use spice-common m4 macro for lz4
This will allow to share this detection code with spice-gtk.
2015-06-22 19:47:58 +02:00
Christophe Fergeau
27636d80de build-sys: Use spice-common m4 macro for opengl
This factorizes a bit of configure.ac m4 code.
2015-06-22 19:47:58 +02:00
Christophe Fergeau
fe2ca14fc2 build-sys: Use spice-common m4 macro for smartcard
Besides the code factorization, this will allow smartcard support to be
automatically enabled if libcacard is present and --disable-smartcard is
not used.
2015-06-22 19:47:58 +02:00
Marc-André Lureau
55bc82f070 reds: increase listening socket backlog
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.
2015-06-17 15:58:56 +02:00
Cédric Bosdonnat
939e643c2a Add password length check
Don't allow setting a too long password.
2015-06-16 09:53:35 +02:00
Frediano Ziglio
3c77eaa1d7 Use spice_malloc instead of malloc
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>
2015-06-16 09:53:35 +02:00
Jonathon Jongsma
a94836a467 Remove duplicate streaming enumeration
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.
2015-06-15 13:08:42 -05:00
Jonathon Jongsma
edc52a4ead Use AS_HELP_STRING for configure options 2015-06-15 13:08:42 -05:00
Frediano Ziglio
7b0ad8d44c Fix typo in comment
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2015-06-11 16:54:41 +02:00
Frediano Ziglio
6ec714e855 Use MIN macro to compute a minimum
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2015-06-11 16:54:41 +02:00
Javier Celaya
7a081a7ced LZ4: warn if trying to set lz4 but not supported 2015-06-11 16:45:52 +02:00
Francois Gouget
0feb705cbf server: Remove an unused structure. 2015-06-09 16:36:16 +02:00
Marc-André Lureau
f10de4bc08 sound: do not modify client state on migration
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
2015-06-04 17:49:30 +02:00
Christophe Fergeau
05502a9440 build-sys: Pass --enable-python-checks when running autogen.sh
This will tell spice-common configure.ac to test for the availability of
python-six when building from git.
2015-04-23 10:38:24 +02:00
Christophe Fergeau
d8b5f1861a Update spice-common submodule
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
2015-04-23 10:37:46 +02:00
Christophe Fergeau
f80eef8f9c build-sys: Replace cpu detection error with warning
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.
2015-04-10 20:24:15 +02:00