<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title></title></head><body><p style="margin: 0px;">Am Mon, 30 Jan 2017 16:50:05 +0400 schrieb marcandre.lureau:<br /><br />> From: Marc-André Lureau <marcandre.lureau@redhat.com><br />> <br />> Since 2.8, QEMU now longer creates QXL primary surfaces when using GL.<br />> This change broke client-side mouse mode, because Spice server relies on<br />> primary surface conditions.<br />> <br />> When GL is enabled, use GL scanout informations, similar to what<br />> red_qxl_get_allow_client_mouse() is doing. The main difference is that<br />> the GL surface doesn't have mouse_mode attached (what for?).<br />> <br />> NB: this code looks like it handles only first QXL instance only, and<br />> uses the whole scanout/surface size for the input table size, perhaps<br />> monitor-configs would be a better choice.<br />> <br />> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com><br />> ---<br />>  server/red-qxl.c | 2 ++<br />>  server/reds.c    | 8 +++++++-<br />>  2 files changed, 9 insertions(+), 1 deletion(-)<br />> <br />> diff --git a/server/red-qxl.c b/server/red-qxl.c index<br />> b6b3770b..ba7b641a 100644 --- a/server/red-qxl.c +++ b/server/red-qxl.c<br />> @@ -897,6 +897,8 @@ void spice_qxl_gl_scanout(QXLInstance *qxl,<br />>      /* FIXME: find a way to coallesce all pending SCANOUTs */<br />>      dispatcher_send_message(qxl_state->dispatcher,<br />>                              RED_WORKER_MESSAGE_GL_SCANOUT, &payload);<br />> +<br />> +    reds_update_client_mouse_allowed(qxl_state->reds);<br />>  }<br />>  <br />>  SPICE_GNUC_VISIBLE<br />> diff --git a/server/reds.c b/server/reds.c index 40c94851..a89c5e90<br />> 100644 --- a/server/reds.c +++ b/server/reds.c @@ -4256,10 +4256,16 @@<br />> void reds_update_client_mouse_allowed(RedsState *reds)<br />>      if (num_active_workers > 0) {<br />>          GListIter it;<br />>          QXLInstance *qxl;<br />> +        SpiceMsgDisplayGlScanoutUnix *gl;<br />>  <br />>          allow_now = TRUE; FOREACH_QXL_INSTANCE(reds, it, qxl) {<br />> -            if (red_qxl_get_primary_active(qxl)) {<br />> +            if ((gl = red_qxl_get_gl_scanout(qxl))) {<br />> +                x_res = gl->width;<br />> +                y_res = gl->height;<br />> +                red_qxl_put_gl_scanout(qxl, gl);<br />> +                break;<br />> +            } else if (red_qxl_get_primary_active(qxl)) {<br />>                  allow_now = red_qxl_get_allow_client_mouse(qxl, &x_res,<br />>                  &y_res);<br />>                  break;<br />>              }</p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;">Hi, <br /><br />I have tried virgl with qemu 2.8, spice 13.3 and a fedora rawhide guest but the mouse pointer (usbtablet) didn't move, I was just able to get the context menu on the desktop using the right mouse button. Now I applied this patch and it works for me, thank you!</p><br/><br/><div style=\"border:0;border-bottom:1px solid black;width:100%;\"> </div><font style="font-family: Arial, Helvetica, sans-serif; font-size: 10pt">Gesendet mit <a href="https://t-online.de/email-kostenlos">Telekom Mail</a> - kostenlos und sicher für alle!</font></body></html>