Same comment as http://lists.freedesktop.org/archives/spice-devel/2015-December/024682.html "I don't really understand the reason for this patch. Why do we need to wakeup the worker immediately after a display pipe item has been released, but not a cursor item? Why can't we wait for the next worker poll timeout to expire? Updating the worker timeout seems like an implementation detail, so adding an API for other classes to call seems a little weird to me." Reviewed-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> On Wed, 2015-12-09 at 12:17 +0000, Frediano Ziglio wrote: > From: Marc-André Lureau <marcandre.lureau@xxxxxxxxx> > > --- > server/display-channel.c | 2 ++ > server/red-worker.c | 8 ++++++++ > server/red-worker.h | 1 + > 3 files changed, 11 insertions(+) > > diff --git a/server/display-channel.c b/server/display-channel.c > index 32d87af..60170cb 100644 > --- a/server/display-channel.c > +++ b/server/display-channel.c > @@ -1987,9 +1987,11 @@ static void hold_item(RedChannelClient *rcc, PipeItem > *item) > static void release_item(RedChannelClient *rcc, PipeItem *item, int > item_pushed) > { > DisplayChannelClient *dcc = RCC_TO_DCC(rcc); > + RedWorker *worker = DCC_TO_WORKER(dcc); > > spice_return_if_fail(item != NULL); > dcc_release_item(dcc, item, item_pushed); > + red_worker_update_timeout(worker, 0); > } > > static int handle_migrate_flush_mark(RedChannelClient *rcc) > diff --git a/server/red-worker.c b/server/red-worker.c > index b59a5a1..ae4ac27 100644 > --- a/server/red-worker.c > +++ b/server/red-worker.c > @@ -112,6 +112,14 @@ RedMemSlotInfo* red_worker_get_memslot(RedWorker *worker) > return &worker->mem_slots; > } > > +void red_worker_update_timeout(RedWorker *worker, gint timeout) > +{ > + spice_return_if_fail(worker != NULL); > + spice_return_if_fail(timeout >= 0); > + > + worker->event_timeout = MIN(worker->event_timeout, timeout); > +} > + > static int display_is_connected(RedWorker *worker) > { > return (worker->display_channel && red_channel_is_connected( > diff --git a/server/red-worker.h b/server/red-worker.h > index b55a45c..3a9dc19 100644 > --- a/server/red-worker.h > +++ b/server/red-worker.h > @@ -94,6 +94,7 @@ static inline void red_pipes_add_verb(RedChannel *channel, > uint16_t verb) > > RedWorker* red_worker_new(QXLInstance *qxl, RedDispatcher *red_dispatcher); > bool red_worker_run(RedWorker *worker); > +void red_worker_update_timeout(RedWorker *worker, gint timeout); > QXLInstance* red_worker_get_qxl(RedWorker *worker); > RedChannel* red_worker_get_cursor_channel(RedWorker *worker); > RedChannel* red_worker_get_display_channel(RedWorker *worker); _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel