[Mesa-dev] [PATCH 2/2] pipe-loader: use the correct screen index

Marek Olšák maraeo at gmail.com
Tue Aug 19 15:36:14 PDT 2014


From: Marek Olšák <marek.olsak at amd.com>

---
 src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
index 1bbaf19..2468336 100644
--- a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
+++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
@@ -63,6 +63,20 @@ struct pipe_loader_drm_device {
 
 static struct pipe_loader_ops pipe_loader_drm_ops;
 
+#ifdef HAVE_PIPE_LOADER_XCB
+
+static xcb_screen_t *
+get_xcb_screen(xcb_screen_iterator_t iter, int screen)
+{
+    for (; iter.rem; --screen, xcb_screen_next(&iter))
+        if (screen == 0)
+            return iter.data;
+
+    return NULL;
+}
+
+#endif
+
 static void
 pipe_loader_drm_x_auth(int fd)
 {
@@ -77,8 +91,9 @@ pipe_loader_drm_x_auth(int fd)
    drm_magic_t magic;
    xcb_dri2_authenticate_cookie_t authenticate_cookie;
    xcb_dri2_authenticate_reply_t *authenticate;
+   int screen;
 
-   xcb_conn = xcb_connect(NULL,  NULL);
+   xcb_conn = xcb_connect(NULL, &screen);
 
    if(!xcb_conn)
       return;
@@ -89,7 +104,8 @@ pipe_loader_drm_x_auth(int fd)
     goto disconnect;
 
    s = xcb_setup_roots_iterator(xcb_setup);
-   connect_cookie = xcb_dri2_connect_unchecked(xcb_conn, s.data->root,
+   connect_cookie = xcb_dri2_connect_unchecked(xcb_conn,
+                                               get_xcb_screen(s, screen)->root,
                                                XCB_DRI2_DRIVER_TYPE_DRI);
    connect = xcb_dri2_connect_reply(xcb_conn, connect_cookie, NULL);
 
-- 
1.9.1



More information about the mesa-dev mailing list