[Spice-commits] server/dcc.c

Frediano Ziglio fziglio at kemper.freedesktop.org
Tue Sep 27 10:18:36 UTC 2016


 server/dcc.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit fd888a0bfd0a1e32ae05ada7e6846bc3f98f87c6
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Fri Jul 15 14:15:52 2016 +0100

    Check client is using unix sockets in dcc_gl_draw_item_new
    
    Currently this is simply avoided by the fact that Virgl with 3d means
    Unix socket. Once you enable (in Qemu) tcp sockets this message will
    be added to all clients (supposing multiple clients) so potentially
    will be in all queues. The same check is done for dcc_gl_scanout_item_new.
    dcc_gl_scanout_item_new is called when Qemu calls spice_qxl_gl_draw_async.
    Technically a client can support SPICE_DISPLAY_CAP_GL_SCANOUT but server
    cannot send the DRM prime directly as this require a unix socket so
    if the test for SPICE_DISPLAY_CAP_GL_SCANOUT is done here it make sense
    to do the check for the socket type too.
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Christophe Fergeau <cfergeau at redhat.com>

diff --git a/server/dcc.c b/server/dcc.c
index 68080e5..ce8677d 100644
--- a/server/dcc.c
+++ b/server/dcc.c
@@ -578,7 +578,8 @@ RedPipeItem *dcc_gl_draw_item_new(RedChannelClient *rcc, void *data, int num)
     const SpiceMsgDisplayGlDraw *draw = data;
     RedGlDrawItem *item;
 
-    if (!red_channel_client_test_remote_cap(rcc, SPICE_DISPLAY_CAP_GL_SCANOUT)) {
+    if (!reds_stream_is_plain_unix(red_channel_client_get_stream(rcc)) ||
+        !red_channel_client_test_remote_cap(rcc, SPICE_DISPLAY_CAP_GL_SCANOUT)) {
         spice_printerr("FIXME: client does not support GL scanout");
         red_channel_client_disconnect(rcc);
         return NULL;


More information about the Spice-commits mailing list