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

Christophe Fergeau cfergeau at redhat.com
Tue Jan 31 16:58:29 UTC 2017


Disregard this patch, I sent it by mistake.

Christophe

On Tue, Jan 31, 2017 at 05:48:39PM +0100, Christophe Fergeau wrote:
> From: Marc-André Lureau <marcandre.lureau at redhat.com>
> 
> 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, similar to what
> red_qxl_get_allow_client_mouse() is doing. The main difference is that
> the GL surface doesn't have mouse_mode attached (what for?).
> 
> NB: this code looks like it handles only first QXL instance only, and
> uses the whole scanout/surface size for the input table size, perhaps
> monitor-configs would be a better choice.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau at redhat.com>
> ---
>  server/red-qxl.c | 2 ++
>  server/reds.c    | 8 +++++++-
>  2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/server/red-qxl.c b/server/red-qxl.c
> index b6b3770..ba7b641 100644
> --- a/server/red-qxl.c
> +++ b/server/red-qxl.c
> @@ -897,6 +897,8 @@ 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);
> +
> +    reds_update_client_mouse_allowed(qxl_state->reds);
>  }
>  
>  SPICE_GNUC_VISIBLE
> diff --git a/server/reds.c b/server/reds.c
> index bd22333..a28da25 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -4250,10 +4250,16 @@ void reds_update_client_mouse_allowed(RedsState *reds)
>      if (num_active_workers > 0) {
>          GListIter it;
>          QXLInstance *qxl;
> +        SpiceMsgDisplayGlScanoutUnix *gl;
>  
>          allow_now = TRUE;
>          FOREACH_QXL_INSTANCE(reds, it, qxl) {
> -            if (red_qxl_get_primary_active(qxl)) {
> +            if ((gl = red_qxl_get_gl_scanout(qxl))) {
> +                x_res = gl->width;
> +                y_res = gl->height;
> +                red_qxl_put_gl_scanout(qxl, gl);
> +                break;
> +            } else if (red_qxl_get_primary_active(qxl)) {
>                  allow_now = red_qxl_get_allow_client_mouse(qxl, &x_res, &y_res);
>                  break;
>              }
> -- 
> 2.9.3
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170131/299032f7/attachment.sig>


More information about the Spice-devel mailing list