On Wed, Jun 29, 2011 at 03:06:33PM +0200, Gerd Hoffmann wrote: > Hi, > > >+ case QXL_IO_FLUSH_SURFACES: > >+ dprint(d, 1, "QXL_IO_FLUSH_SURFACES (%d) entry (%s, s#=%d, > >res#=%d)\n", > >+ val, qxl_mode_to_string(d->mode), d->guest_surfaces.count, > >+ d->num_free_res); > >+ qemu_spice_stop(&d->ssd); > >+ qemu_spice_start(&d->ssd); > >+ dprint(d, 1, "QXL_IO_FLUSH_SURFACES exit (%s, s#=%d, res#=%d,%p)\n", > >+ qxl_mode_to_string(d->mode), d->guest_surfaces.count, > >+ d->num_free_res, d->last_release); > >+ break; > > This should be async as we'll go sleep and wait for the spice server > thread finish in qemu_spice_stop().
Yeah, I meant to do that, forgot, thanks for catching it. > > >+ case QXL_IO_FLUSH_RELEASE: { > >+ QXLReleaseRing *ring =&d->ram->release_ring; > >+ if (ring->prod - ring->cons + 1 == ring->num_items) { > >+ // TODO - "return" a value to the guest and let it loop? > ^^^^ > Hmm. So the story goes: I wrote this, but didn't actually see this happen in practice, particularily since the driver empties the release ring. The simplest would be to replace it with some fprintf(stderr) > > cheers, > Gerd