[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