[Spice-devel] [PATCH spice-server 1/2] gl: fix client mouse mode

Marc-André Lureau marcandre.lureau at redhat.com
Thu Sep 7 12:46:42 UTC 2017



----- Original Message -----
> 
> 
> > Hi
> > 
> > ----- Original Message -----
> > > Since 2.8, QEMU now longer creates QXL primary surfaces when using GL.
> > > This change broke client-side mouse mode, because Spice server relies on
> > > primary surface conditions.
> > > 
> > > When GL is enabled, use GL scanout informations.
> > > Mouse mode is always client when GL surfaces are used.
> > > 
> > > This patch and most of the message are based on a patch from
> > > Marc-André Lureau, just moving responsibility from reds to RedQxl.
> > 
> > My patch was updating reds_update_client_mouse_allowed() which I think was
> > a
> > better place to do cursor business.
> > 
> > Furthermore, it didn't mess with QXL/2D state.
> > 
> > > 
> > > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > > ---
> > >  server/red-qxl.c | 7 +++++++
> > >  1 file changed, 7 insertions(+)
> > > 
> > > diff --git a/server/red-qxl.c b/server/red-qxl.c
> > > index b556428d2..a003052ca 100644
> > > --- a/server/red-qxl.c
> > > +++ b/server/red-qxl.c
> > > @@ -873,6 +873,13 @@ void spice_qxl_gl_scanout(QXLInstance *qxl,
> > >      /* FIXME: find a way to coallesce all pending SCANOUTs */
> > >      dispatcher_send_message(qxl_state->dispatcher,
> > >                              RED_WORKER_MESSAGE_GL_SCANOUT, &payload);
> > > +
> > > +    qxl_state->x_res = width;
> > > +    qxl_state->y_res = height;
> > > +    qxl_state->use_hardware_cursor = TRUE;
> > > +    qxl_state->primary_active = TRUE;
> > 
> > I didn't need to touch qxl-state. Not sure what would be the side effect of
> > all this changes, and how they related to the problem.
> >  
> > > +
> > > +    reds_update_client_mouse_allowed(qxl_state->reds);
> > >  }
> > >  
> > >  SPICE_GNUC_VISIBLE
> 
> Looks like you keep saying the same comments and I keep answering
> the same things.

You said:

"In all versions Qemu create a new primary surface before sending any 2D command
(tested and checked code).
As current version destroy the surface I doubt in the future will send 2D
command before creating the primary surface again (would be an error).

I think this state transitions should be documented in some way."

This doesn't explain why you mess with those qxl/2d values in the first place and what it has to do with cursor.

> I already explained my reasoning and you had never been able to
> raise any issue on this approach while you never been able to
> confute mine.
> 
> Frediano
> 


More information about the Spice-devel mailing list