[Spice-devel] [PATCH 8/9] worker: make sure we dispatch after releasing items
Frediano Ziglio
fziglio at redhat.com
Tue Dec 15 04:49:23 PST 2015
> 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 at redhat.com>
>
>
> On Wed, 2015-12-09 at 12:17 +0000, Frediano Ziglio wrote:
> > From: Marc-André Lureau <marcandre.lureau at gmail.com>
> >
> > ---
> > 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);
>
No replies after a while and no apparent reasons.
Rejecting the patch.
Frediano
More information about the Spice-devel
mailing list