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

Frediano Ziglio fziglio at redhat.com
Thu Sep 7 12:58:04 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.
> 

So now the size of the display is a cursor attribute in your opinion ?
I think you miss all February discussion
https://lists.freedesktop.org/archives/spice-devel/2017-February/date.html

> > 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