Commit Graph

3192 Commits

Author SHA1 Message Date
Frediano Ziglio
9ba847c2da sound: Rename SndChannel to SndChannelClient
SndWorker has been historically based on RedChannel, initial git commit
has:
struct SndWorker {
     Channel base;
     ...
};

SndChannel, contrary to what its name may imply is more focused on
marshalling/sending of sound data, which is the responsibility of
RedChannelClient for the other SPICE channels.

This commit and following ones make the naming of these 2 types more
consistent with how the rest of the code is structured.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-12-01 16:26:07 +00:00
Frediano Ziglio
3961d13cd9 sound: Use worker directly
SpicePlaybackState and SpiceRecordState have same structures
changing only slightly the behaviour.
Using SndWorker instead allows some minor simplification and
more code reuse.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-12-01 16:09:39 +00:00
Uri Lublin
1f800090ef manual: usbredir: remove the note about usbclerk
The usbdk driver is preferred over usbclerk.

Signed-off-by: Uri Lublin <uril@redhat.com>
2016-12-01 12:08:32 +02:00
Uri Lublin
a668da95a4 manual: move usbdk to the client subsection
Also added "clients" to the sentence to make it clear
that usbdk is to be installed on the client machine.

Signed-off-by: Uri Lublin <uril@redhat.com>
2016-12-01 12:08:32 +02:00
Uri Lublin
3f8457febe manual: smartcard: add id=ccid to qemu command line
Add it to "-chardev spicevmc" option.

Without it I get:
qemu-system-x86_64: -chardev spicevmc,name=smartcard: chardev: no id specified

Signed-off-by: Uri Lublin <uril@redhat.com>
2016-12-01 12:08:32 +02:00
Frediano Ziglio
8da22558b7 Allows reds_core_timer_remove to accept NULL for timer
Most of the times the check is done externally
so moving inside the function reduce the code.
This is similar to the way free(3) works.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-30 17:35:41 +00:00
Frediano Ziglio
ab77c22ec5 Remove unused red_channel_get_first_socket
This function assume there is only one client.
Was used only by some obsolete functions.
Avoid to use such function in the future.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-30 17:35:41 +00:00
Frediano Ziglio
97eee5a352 Remove unused and obsolete main_channel_close
This function wrongly close the first client.
Wrongly as closing the file descriptor cause a dandling
file descriptor in the object potentially leading
to closing another file descriptor open later.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-30 17:35:41 +00:00
Frediano Ziglio
311a79155d Use red_channel_destroy to free main_channel
This will close all clients and release the channel properly

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-30 17:35:41 +00:00
Frediano Ziglio
f73e8319c6 Move some include from header to source
Now that RedStatFile is private there is no need
to include some headers in stat-file.h.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2016-11-30 15:44:28 +00:00
Frediano Ziglio
4eed0bf8ec Return invalid value from very old obsolete functions
These functions are not used since years and are not supporting
multiple clients.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-30 14:10:40 +00:00
Frediano Ziglio
cd57ce246c cursor: Avoid cursor item leak
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-30 13:03:36 +00:00
Frediano Ziglio
e1cc694a72 Avoid to leak timer in InputsChannel
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-30 13:00:12 +00:00
Frediano Ziglio
38ca3467bd Do not leak mig_timer
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-30 12:38:39 +00:00
Frediano Ziglio
af58d24f9b Free state on spice_server_destroy
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-30 12:37:20 +00:00
Frediano Ziglio
47f56a72e0 Free statistic file on spice_server_destroy
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-30 12:36:47 +00:00
Frediano Ziglio
29d6642430 sound: Unify commands
Use same constants for common commands.
This will allow code reuse between Record and Playback.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Uri Lublin <uril@redhat.com>
2016-11-29 12:53:06 +00:00
Frediano Ziglio
7c8272b995 Remove unused fields
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Uri Lublin <uril@redhat.com>
2016-11-29 12:38:43 +00:00
Pavel Grunt
06cb7378ad build-sys: Add configure option to enable statistics
Follow up to 5fba8dd1a3
to make it easier to enable them

Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-11-29 09:39:37 +00:00
Frediano Ziglio
cb3216aa83 Reuse reds_core_timer_add
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-28 19:21:11 +00:00
Frediano Ziglio
afa3144de5 red_worker: add RED_WORKER_MESSAGE_CLOSE_WORKER message
Allows to close worker thread.
This will be used to destroy cleanly CursorChannel and
DisplayChannel.
CursorChannel and DisplayChannel are run in a different
thread. However deregistration of channels and different
steps of destruction should be done in the same thread
so this make possible to join again the 2 threads to
avoid race conditions.
For the moment there is no correct cleanup.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-28 19:20:09 +00:00
Frediano Ziglio
bb74d7ad47 Use LZ4_compress_fast_continue if available
This make compression faster and avoids a warning on newer
lz4 versions.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-28 18:38:22 +00:00
Frediano Ziglio
f275733de3 Add a red_memslot_info_destroy function
Allows to free RedMemSlotInfo structure

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-25 14:36:40 +00:00
Frediano Ziglio
e05cf93a01 tests: Normalize test names
Use dash instead of underscores for file names. This is coherent
with rest of file names.
Rename all tests to test-XXX and remove the spice- prefix when
present. This is coherent with most of the tests.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-25 13:52:39 +00:00
Frediano Ziglio
8fcfd9a4df Rename self field to thread_id
self is usually used for GObject, avoid confusion.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-11-24 13:32:10 +00:00
Frediano Ziglio
867c3a734a dcc: Remove unneeded private header inclusion
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-11-24 13:32:02 +00:00
Francois Gouget
97fcad82eb streaming: Always delegate bit rate control to the video encoder
The video encoders already have sophisticated bit rate control code that
can react to both stream reports sent by the client, and server frame
drop notifications. Furthermore they can adjust both the frame rate and
the image quality to best match the network conditions.

But if the client cannot send stream reports all this is bypassed and
instead the streaming code performs its own primitive bit rate control
that can only adjust the frame rate.

So this patch removes the code duplication and lets the video encoders
do their job.

Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2016-11-21 16:47:51 +00:00
Pavel Grunt
5554b1ec95 reds: Replace strncpy with g_strlcpy
strncpy is considered unsafe

Acked-by: Frediano Ziglio <fziglio@redhat.com>
2016-11-21 16:47:51 +00:00
Christophe Fergeau
c52da2fec5 build: Update NEWS file 2016-11-21 15:24:03 +01:00
Christophe Fergeau
44645cde92 build: Update SPICE_REVISION for new release
No ABI addition/removal/... so no need to change anything else.
2016-11-21 14:40:47 +01:00
Christophe Fergeau
598fb35ec5 smartcard: Remove duplicate accessor
smartcard_channel_client_get_device() is the same as
smartcard_channel_client_get_char_device(). Let's only keep the latter.
2016-11-21 14:40:47 +01:00
Christophe Fergeau
00d2c6f226 smartcard: Fix SmartcardChannelClient creation
The wrong type (RED_TYPE_CHANNEL_CLIENT rather than
TYPE_SMARTCARD_CHANNEL_CLIENT) was used when creating a
SmartcardChannelClient, which meant the _init function was never called,
and SmartcardChannelClient::priv was never initialized.

This caused a crash when trying to connect with --spice-smartcard to a
VM with a smartcard channel configured.
2016-11-21 14:40:47 +01:00
Pavel Grunt
a31e18f264 syntax-check: Skip strncpy check
strncpy used in reds_init_socket() has destination NUL terminated

Acked-by: Frediano Ziglio <fziglio@redhat.com>
2016-11-18 12:30:56 +00:00
Pavel Grunt
6858eea801 syntax-check: Update gnufiles
Fix make check, otherwise it fails on
   GEN      public-submodule-commit
 Stopping at 'spice-common'; script returned non-zero status.
 maint.mk: found non-public submodule commit

Acked-by: Frediano Ziglio <fziglio@redhat.com>
2016-11-18 12:06:53 +00:00
Frediano Ziglio
7615d6ae73 Avoid leaking ping_timer in MainChannelClient
This leaks happen for every connection. Potentially the timer can
be called after the client is closed causing an use after free.
Recently RED_STATISTICS was switched off by default but previous
version have this issue.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-18 12:04:43 +00:00
Pavel Grunt
21b72cd8f0 red-qxl: Remove traling semicolon
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2016-11-18 11:54:21 +00:00
Frediano Ziglio
36bf206df8 Avoid use after free
self->priv was deleted and then used

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-11-18 10:05:16 +00:00
Pavel Grunt
39b6b65421 Do not crash on NULL codecs
Reviewed-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2016-11-17 11:13:04 +00:00
Pavel Grunt
5c311ea8a1 Add test for codecs parsing
With Glib2.34 test invalid codec strings

Reviewed-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2016-11-17 11:12:21 +00:00
Frediano Ziglio
e31c108417 Make sure statistic file are initialized even if init is not called
This caused a NULL pointer dereference executing some tests
calling spice_server_destroy.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-11-17 11:08:40 +00:00
Frediano Ziglio
973cbb4df2 Revert "replay: Replicate wakeups properly"
This reverts commit c6881ad1a0.

This patch cause the replay utility run at full speed
to slow down a lot and in some cases getting stuck.
I don't understand the reason and when I tested was working
but as we are going to release would be a pity if this test utility
won't work as useful to get feedback and reports.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-11-17 11:03:51 +00:00
Pavel Grunt
720f0d0a59 Define G_LOG_DOMAIN
Otherwise messages produced by g_{warn, return, ...} are not prefixed
like the spice_ variants.

Acked-by: Frediano Ziglio <fziglio@redhat.com>
2016-11-17 09:01:23 +00:00
Jonathon Jongsma
a7829c9609 Fix build when builddir != srcdir
The following build error occurs when building outside of the source
directory:

glib-mkenums --template spice-server-enums.tmpl.c ../../server/spice-server.h > spice-server-enums.c
Can't open spice-server-enums.tmpl.c: No such file or directory
Makefile:1111: recipe for target 'spice-server-enums.c' failed

Make/Automake uses VPATH to determine that the spice-server-enums.tmpl.c
file listed in the prerequisites for the rule is located in the srcdir.
When we use an automatic variable (e.g. $<), the full path to the
resolved file is used. But when we use the literal filename directly
within the rule definition, this won't happen. So we need to explicitly
specify that the input template file is located in srcdir.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2016-11-16 10:47:26 -06:00
Frediano Ziglio
002c7c9eeb Make RedStatFile private inside stat-file.c
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-11-16 16:38:32 +00:00
Frediano Ziglio
41c042ca36 Avoid leaking file descriptor for statistics
mmap memory area will remain even if the descriptor is closed.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-11-16 16:38:30 +00:00
Frediano Ziglio
d163f17a36 Use g_strdup_printf instead of manually malloc/snprintf
Make the code easier and shorter.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-11-16 16:38:27 +00:00
Frediano Ziglio
5209d33977 Add a base test for statistic file
Create a file and add/remove some nodes.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-11-16 16:38:24 +00:00
Frediano Ziglio
fe543c6b45 Fix node removal
Avoid to produce loop in the tree removing and adding nodes.
Unlink the node from the containing tree.
This possibly will create unlinked trees if a parent node is
deleted.

What was happening is that the creation of loops inside
the tree caused some statistical function to go into an
infinite loop (and reds_stat tool too).

Nodes were only invalidated but still linked so when reused
the new node could point to an already existing node (like a
sibling) which pointed to the new reused one.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-11-16 16:38:21 +00:00
Frediano Ziglio
f9ccabfaea Separate code to manage statistic file
Code is quite independent so move in separate file.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-11-16 16:38:13 +00:00
Pavel Grunt
99eff8500b Do not use gstreamer in default codecs if not available
Avoid the following warning when build with disabled gstreamer:
Spice-WARNING **: reds.c:3660:reds_set_video_codecs: spice: unsupported video encoder gstreamer

Acked-by: Frediano Ziglio <fziglio@redhat.com>
2016-11-16 14:33:48 +00:00