From: Marc-André Lureau <marcandre.lur...@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.lur...@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 b6b3770b..ba7b641a 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 40c94851..a89c5e90 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -4256,10 +4256,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.11.0.295.gd7dffce1c.dirty

_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to