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

Frediano Ziglio fziglio at redhat.com
Mon Mar 6 10:51:37 UTC 2017


> 
> Hi
> 
> ----- 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.
> > > > 
> > > 
> > > Which could cause more trouble than my approach when switching from/to
> > > 3d/2d.
> > > You are mixing what used to be QXL/2D-specific and QXL/GL state.
> > > 
> > > (NACK from me by principle, I didn't have time to check if it actually
> > > breaks
> > > 3d/2d switching)
> > > 
> > 
> > Which principle?
> > 
> 
> meaning I don't have a proof of what I argue above, I just want to warn about
> it, and I dislike this approach.
> 

I tried to explain in 2/2 and why looking at code responsibility
I think is better.
The result of the two changes are the same, the mouse get the display
size/state of either the scanout or the primary surface.
If you looks at the code calling reds_update_client_mouse_allowed is
very similar between the two statuses (2d and 3d) and it's done
at similar time (when you have something to display).

> > 
> > > > 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 53f3338..896bb76 100644
> > > > --- a/server/red-qxl.c
> > > > +++ b/server/red-qxl.c
> > > > @@ -883,6 +883,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;
> > > > +
> > > > +    reds_update_client_mouse_allowed(qxl_state->reds);
> > > >  }
> > > >  
> > > >  SPICE_GNUC_VISIBLE


More information about the Spice-devel mailing list