spice/server
Frediano Ziglio 08dd9c4f48 red-worker: Start processing commands as soon as possible
When the worker is started it could take a while to start processing
commands.
The reason is that the dispatcher handler is called after the worker
so GLib will receive a FALSE answer to both prepare and check
callbacks of the RedWorkerSource causing GLib to wait till another
event is received.
This is a regression since the introduction of GLib event loop, before
the command processing was always attempted after any events.
Commands (from QXL interface for cursor and display) are processed
during the RedWorkerSource dispatch so if they are not processed just
when the VM is started they will be processed on next event which
could be from dispatcher (main thread requests), from existing
connections or from pending timers. However in the case there are no
clients connected and no other requests from main thread the worker
thread won't process them.
Setting the event_timeout to 0 cause the prepare callback to return
TRUE so GLib will dispatch the RedWorkerSource.
This was discovered attempting to use the tests in server/tests
directory to reproduce a leak in RedWorker.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2017-09-12 14:15:39 +01:00
..
tests test-gst: Free pipelines 2017-09-12 13:08:10 +01:00
.gitignore gitignore: Reuse top-level gitignore 2016-12-14 19:09:21 +00:00
agent-msg-filter.c Fix minor inconsistencies with declaration and definition 2017-02-16 10:28:52 +00:00
agent-msg-filter.h Unify header guards 2017-03-30 18:17:20 +01:00
cache-item.h Unify header guards 2017-03-30 18:17:20 +01:00
cache-item.tmpl.c Use SPICE_VERIFY macro for RHEL6 compatibility 2016-11-14 17:22:02 +00:00
char-device.c char-device: Allows to handle port events from any char device 2017-08-23 16:11:49 +01:00
char-device.h char-device: Allows to handle port events from any char device 2017-08-23 16:11:49 +01:00
common-graphics-channel.c common-graphics-channel: Move "qxl" property to DisplayChannel 2017-09-07 06:42:01 +01:00
common-graphics-channel.h common-graphics-channel: Move "qxl" property to DisplayChannel 2017-09-07 06:42:01 +01:00
cursor-channel-client.c channel: Move RedChannel::on_disconnect to RedChannelClient 2017-08-31 15:51:57 +02:00
cursor-channel-client.h channel: Move RedChannel::on_disconnect to RedChannelClient 2017-08-31 15:51:57 +02:00
cursor-channel.c cursor-channel: Remove dependency from QXL 2017-09-07 06:41:49 +01:00
cursor-channel.h cursor-channel: Remove dependency from QXL 2017-09-07 06:41:49 +01:00
dcc-private.h Unify header guards 2017-03-30 18:17:20 +01:00
dcc-send.c common-graphics-channel: Move "qxl" property to DisplayChannel 2017-09-07 06:42:01 +01:00
dcc.c dcc: Make dcc_stop static 2017-09-07 12:15:31 +01:00
dcc.h dcc: Make dcc_stop static 2017-09-07 12:15:31 +01:00
demarshallers.h Unify header guards 2017-03-30 18:17:20 +01:00
dispatcher.c Dispatcher: remove async_done callback 2017-09-07 10:22:15 -05:00
dispatcher.h Add documentation for Dispatcher 2017-09-07 11:12:45 -05:00
display-channel-private.h common-graphics-channel: Move "qxl" property to DisplayChannel 2017-09-07 06:42:01 +01:00
display-channel.c common-graphics-channel: Move "qxl" property to DisplayChannel 2017-09-07 06:42:01 +01:00
display-channel.h display-channel: Make some declarations private 2017-09-02 08:27:26 +01:00
display-limits.h Unify header guards 2017-03-30 18:17:20 +01:00
event-loop.c Remove core_public and core_interface_adapter globals usage 2016-11-15 16:49:09 +00:00
glib-compat.h Unify header guards 2017-03-30 18:17:20 +01:00
glz-encode-match.tmpl.c server: rename _tmpl files 2015-11-26 13:33:36 +00:00
glz-encode.tmpl.c Fix -Werror=format with DEBUG_ENCODE 2016-07-01 14:00:37 +02:00
glz-encoder-dict.c Make various functions static 2017-04-05 12:39:20 +02:00
glz-encoder-dict.h Make various functions static 2017-04-05 12:39:20 +02:00
glz-encoder-priv.h Unify header guards 2017-03-30 18:17:20 +01:00
glz-encoder.c Use bool rather than int return values when appropriate 2017-03-09 18:39:29 +01:00
glz-encoder.h Unify header guards 2017-03-30 18:17:20 +01:00
gstreamer-encoder.c gstreamer: Check if ORC library can work 2017-08-30 15:59:46 +01:00
image-cache.c Use bool rather than int return values when appropriate 2017-03-09 18:39:29 +01:00
image-cache.h Unify header guards 2017-03-30 18:17:20 +01:00
image-encoders.c Use bool rather than int return values when appropriate 2017-03-09 18:39:29 +01:00
image-encoders.h Unify header guards 2017-03-30 18:17:20 +01:00
inputs-channel-client.c channel: Move RedChannel::on_disconnect to RedChannelClient 2017-08-31 15:51:57 +02:00
inputs-channel-client.h Unify header guards 2017-03-30 18:17:20 +01:00
inputs-channel.c Use new red_channel_pipes_add instead of red_channel_pipes_new_add 2017-09-06 11:39:03 +01:00
inputs-channel.h channel: Move RedChannel::on_disconnect to RedChannelClient 2017-08-31 15:51:57 +02:00
jpeg-encoder.c Sort include order in source files 2016-12-16 08:16:21 +00:00
jpeg-encoder.h Unify header guards 2017-03-30 18:17:20 +01:00
lz4-encoder.c log: remove not widely used logging domain usage 2017-06-16 07:53:00 +01:00
lz4-encoder.h Unify header guards 2017-03-30 18:17:20 +01:00
main-channel-client.c Use new red_channel_pipes_add instead of red_channel_pipes_new_add 2017-09-06 11:39:03 +01:00
main-channel-client.h Use new red_channel_pipes_add instead of red_channel_pipes_new_add 2017-09-06 11:39:03 +01:00
main-channel.c Use new red_channel_pipes_add instead of red_channel_pipes_new_add 2017-09-06 11:39:03 +01:00
main-channel.h main-channel: Fix multimedia time argument type 2017-08-29 16:37:21 +01:00
main-dispatcher.c MainDispatcher: use correct argument type 2017-09-07 10:22:15 -05:00
main-dispatcher.h Unify header guards 2017-03-30 18:17:20 +01:00
Makefile.am gstreamer: Check if ORC library can work 2017-08-30 15:59:46 +01:00
memslot.c Add a red_memslot_info_destroy function 2016-11-25 14:36:40 +00:00
memslot.h Add a red_memslot_info_destroy function 2016-11-25 14:36:40 +00:00
migration-protocol.h Unify header guards 2017-03-30 18:17:20 +01:00
mjpeg-encoder.c mjpeg: Reuse realloc instead of implementing it manually 2017-09-11 21:05:50 +01:00
net-utils.c build-sys: Add configure check for TCP_KEEPIDLE 2017-03-31 12:22:52 +02:00
net-utils.h reds-stream: Introduce reds_stream_get_no_delay() helper 2017-03-31 12:22:52 +02:00
pixmap-cache.c Use bool rather than int return values when appropriate 2017-03-09 18:39:29 +01:00
pixmap-cache.h Unify header guards 2017-03-30 18:17:20 +01:00
red-channel-capabilities.c Initialize earlier GLib type system if necessary 2017-03-30 18:05:30 +01:00
red-channel-capabilities.h Unify header guards 2017-03-30 18:17:20 +01:00
red-channel-client.c red-channel-client: Early check for valid stream 2017-09-12 08:54:39 +01:00
red-channel-client.h red-channel: Reuse red_channel_pipes_add 2017-09-06 11:39:03 +01:00
red-channel.c channel: Remove unused red_channel_min_pipe_size 2017-09-07 16:04:30 +02:00
red-channel.h RedChannel: Remove obsolete TODO comment 2017-09-08 08:21:59 +01:00
red-client.c red-client: Prevent RedChannelClient creation when the RedClient is being destroyed 2017-08-31 18:05:26 +01:00
red-client.h Make various functions static 2017-04-05 12:39:20 +02:00
red-common.h Remove iterator from list iteration macros 2017-08-21 12:54:47 +01:00
red-parse-qxl.c red-parse-qxl: s/true/false 2017-05-02 11:30:47 +02:00
red-parse-qxl.h red-parse-qxl: Change int/1/0 to bool/true/false 2017-05-02 11:30:43 +02:00
red-pipe-item.c MainChannel: remove another init_send_data arg 2016-12-20 16:11:13 +00:00
red-pipe-item.h Unify header guards 2017-03-30 18:17:20 +01:00
red-qxl.c dispatcher: Remove "opaque" property 2017-09-07 16:13:49 +01:00
red-qxl.h red-qxl: Move private declarations to red-worker.h 2017-09-08 16:51:25 +01:00
red-record-qxl.c log: Do not print function name twice during logging 2017-06-18 09:53:27 +01:00
red-record-qxl.h Unify header guards 2017-03-30 18:17:20 +01:00
red-replay-qxl.c red-qxl: Move private declarations to red-worker.h 2017-09-08 16:51:25 +01:00
red-worker.c red-worker: Start processing commands as soon as possible 2017-09-12 14:15:39 +01:00
red-worker.h red-qxl: Remove unused includes 2017-09-08 16:51:27 +01:00
reds-private.h reds: use SpiceMouseMode for RedsState::mouse_mode 2017-08-23 22:16:05 +01:00
reds-stream.c reds-stream: Allows to change core interface 2017-09-07 15:02:11 +01:00
reds-stream.h reds-stream: Remove shutdown field 2017-09-11 21:03:25 +01:00
reds.c reds: Fix leaks if reds_init_client_ssl_connection fails 2017-09-12 11:58:40 +01:00
reds.h Avoid using global variable for channel IDs 2017-09-02 08:20:56 +01:00
smartcard-channel-client.c channel: Move RedChannel::on_disconnect to RedChannelClient 2017-08-31 15:51:57 +02:00
smartcard-channel-client.h channel: Move RedChannel::on_disconnect to RedChannelClient 2017-08-31 15:51:57 +02:00
smartcard.c channel: Move RedChannel::on_disconnect to RedChannelClient 2017-08-31 15:51:57 +02:00
smartcard.h Unify header guards 2017-03-30 18:17:20 +01:00
sound.c channel: Allow NULL RedChannelClient::on_disconnect() 2017-08-31 15:51:57 +02:00
sound.h Change playback_compression to bool type 2017-04-07 15:08:43 -05:00
spice-audio.h Split spice.h 2014-11-27 14:27:18 +01:00
spice-bitmap-utils.c Attempt to create bitmap debug directory 2017-04-07 16:45:54 +01:00
spice-bitmap-utils.h Unify header guards 2017-03-30 18:17:20 +01:00
spice-bitmap-utils.tmpl.c server: rename _tmpl files 2015-11-26 13:33:36 +00:00
spice-char.h Constify spice_server_char_device_recognized_subtypes 2016-06-29 08:09:03 +01:00
spice-core.h Unify header guards 2017-03-30 18:17:20 +01:00
spice-experimental.h Unify header guards 2017-03-30 18:17:20 +01:00
spice-input.h Split spice.h 2014-11-27 14:27:18 +01:00
spice-migration.h server: Use SPICE_GNUC_DEPRECATED to avoid a dependency on glib.h 2016-08-12 09:47:40 +01:00
spice-qxl.h spice-qxl: Add version information 2017-09-07 16:13:49 +01:00
spice-replay.h Unify header guards 2017-03-30 18:17:20 +01:00
spice-server-enums.tmpl.c syntax-check: Use templates for glib-mkenums 2016-11-14 17:45:32 +00:00
spice-server-enums.tmpl.h syntax-check: Use templates for glib-mkenums 2016-11-14 17:45:32 +00:00
spice-server.h Convert RedChannelClient hierarchy to GObject 2016-10-07 14:46:37 -05:00
spice-server.syms streaming: Let the administrator pick the video encoder and codec 2016-06-14 17:04:40 +02:00
spice-version.h.in build-sys: generate spice-version.h 2014-11-27 14:27:33 +01:00
spice.h Make red-replay-qxl.h a public header 2016-11-10 06:37:15 +00:00
spicevmc.c Avoid using global variable for channel IDs 2017-09-02 08:20:56 +01:00
stat-file.c stat-file: Avoid compiler warning 2017-02-03 18:13:22 +00:00
stat-file.h Unify header guards 2017-03-30 18:17:20 +01:00
stat.h Unify header guards 2017-03-30 18:17:20 +01:00
stream.c Avoid to access data before a NULL check 2017-08-30 15:56:43 +01:00
stream.h Unify header guards 2017-03-30 18:17:20 +01:00
sw-canvas.c remove sw-canvas.h 2016-05-09 12:45:37 +01:00
tree.c DisplayChannel: start documenting drawable tree 2017-03-09 12:01:35 -06:00
tree.h Unify header guards 2017-03-30 18:17:20 +01:00
utils.c worker: move dcc_add_surface_area_image 2015-11-23 13:50:44 +00:00
utils.h Unify header guards 2017-03-30 18:17:20 +01:00
video-encoder.h Unify header guards 2017-03-30 18:17:20 +01:00
zlib-encoder.c Sort include order in source files 2016-12-16 08:16:21 +00:00
zlib-encoder.h Unify header guards 2017-03-30 18:17:20 +01:00