[Spice-devel] [PATCH 08/18] worker: display_channel_flush_all_surfaces
Frediano Ziglio
fziglio at redhat.com
Thu Nov 19 07:03:06 PST 2015
> On Wed, Nov 18, 2015 at 5:17 PM, Frediano Ziglio <fziglio at redhat.com> wrote:
> > From: Marc-André Lureau <marcandre.lureau at gmail.com>
> >
> > ---
> > server/display-channel.c | 11 +++++++++++
> > server/display-channel.h | 1 +
> > server/red_worker.c | 22 +++-------------------
> > 3 files changed, 15 insertions(+), 19 deletions(-)
> >
> > diff --git a/server/display-channel.c b/server/display-channel.c
> > index 1702bd6..ce973c5 100644
> > --- a/server/display-channel.c
> > +++ b/server/display-channel.c
> > @@ -838,3 +838,14 @@ int
> > display_channel_wait_for_migrate_data(DisplayChannel *display)
> > }
> > return FALSE;
> > }
> > +
> > +void display_channel_flush_all_surfaces(DisplayChannel *display)
> > +{
> > + int x;
> > +
> > + for (x = 0; x < NUM_SURFACES; ++x) {
> > + if (display->surfaces[x].context.canvas) {
> > + display_channel_current_flush(display, x);
> > + }
> > + }
> > +}
> > diff --git a/server/display-channel.h b/server/display-channel.h
> > index 595ced8..afb9ec5 100644
> > --- a/server/display-channel.h
> > +++ b/server/display-channel.h
> > @@ -272,6 +272,7 @@ int display_channel_add_drawable
> > (DisplayCha
> > void display_channel_current_flush
> > (DisplayChannel *display,
> > int
> > surface_id);
> > int display_channel_wait_for_migrate_data
> > (DisplayChannel *display);
> > +void display_channel_flush_all_surfaces
> > (DisplayChannel *display);
> >
> > static inline int is_equal_path(SpicePath *path1, SpicePath *path2)
> > {
> > diff --git a/server/red_worker.c b/server/red_worker.c
> > index de9117a..51352a8 100644
> > --- a/server/red_worker.c
> > +++ b/server/red_worker.c
> > @@ -6204,28 +6204,12 @@ static void
> > handle_dev_destroy_primary_surface_async(void *opaque, void *payload
> > destroy_primary_surface(worker, surface_id);
> > }
> >
> > -static void flush_all_surfaces(DisplayChannel *display)
> > -{
> > - int x;
> > -
> > - for (x = 0; x < NUM_SURFACES; ++x) {
> > - if (display->surfaces[x].context.canvas) {
> > - display_channel_current_flush(display, x);
> > - }
> > - }
> > -}
> > -
> > -static void dev_flush_surfaces(RedWorker *worker)
> > -{
> > - flush_all_qxl_commands(worker);
> > - flush_all_surfaces(worker->display_channel);
> > -}
> > -
> > static void handle_dev_flush_surfaces_async(void *opaque, void *payload)
> > {
> > RedWorker *worker = opaque;
> >
> > - dev_flush_surfaces(worker);
> > + flush_all_qxl_commands(worker);
> > + display_channel_flush_all_surfaces(worker->display_channel);
> > }
> >
> > static void handle_dev_stop(void *opaque, void *payload)
> > @@ -6236,7 +6220,7 @@ static void handle_dev_stop(void *opaque, void
> > *payload)
> > spice_assert(worker->running);
> > worker->running = FALSE;
> > red_display_clear_glz_drawables(worker->display_channel);
> > - flush_all_surfaces(worker->display_channel);
> > + display_channel_flush_all_surfaces(worker->display_channel);
> > /* todo: when the waiting is expected to take long (slow connection
> > and
> > * overloaded pipe), don't wait, and in case of migration,
> > * purge the pipe, send destroy_all_surfaces
>
> ACK!
>
I would change the commit to ad least "worker: move display_channel_flush_all_surfaces"
Frediano
More information about the Spice-devel
mailing list