Re: [PATCH] xcb: Query the display's subpixel order via RENDER

Uli Schlachter <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
Am 06.12.2014 um 16:13 schrieb Uli Schlachter:
[...]
> +static int _get_screen_index(cairo_xcb_connection_t *xcb_connection,
> +			     xcb_screen_t *xcb_screen)
> +{
> +    int idx = 0;
> +    xcb_screen_iterator_t iter = xcb_setup_roots_iterator(xcb_connection->root);
> +    for (; iter.rem; xcb_screen_next(&iter), idx++)
> +	if (iter.data == xcb_screen)
> +	    return idx;
> +
> +    ASSERT_NOT_REACHED;
> +}
[...]

If only things were so easy...

I changed the "if" in this function to:

  if (iter.data->root == xcb_screen->root)

The reason for this is left as an exercise for the reader.
Oh and I also have another, completely unrelated patch.

Cheers,
Uli


From c068f67ecaa5d756fcad249fea3745daae65d210 Mon Sep 17 00:00:00 2001
From: Uli Schlachter <[email protected]>
Date: Sat, 6 Dec 2014 17:04:07 +0100
Subject: [PATCH] xlib-xcb: Don't be lazy and use the real xcb_screen_t

Signed-off-by: Uli Schlachter <[email protected]>
---
 src/cairo-xlib-xcb-surface.c | 33 ++++++++++++++++++---------------
 1 file changed, 18 insertions(+), 15 deletions(-)

diff --git a/src/cairo-xlib-xcb-surface.c b/src/cairo-xlib-xcb-surface.c
index 9c0d4b4..af3e155 100644
--- a/src/cairo-xlib-xcb-surface.c
+++ b/src/cairo-xlib-xcb-surface.c
@@ -519,21 +519,6 @@ cairo_xlib_surface_create (Display     *dpy,
 								     width, height));
 }
 
-cairo_surface_t *
-cairo_xlib_surface_create_for_bitmap (Display  *dpy,
-				      Pixmap	bitmap,
-				      Screen   *scr,
-				      int	width,
-				      int	height)
-{
-    return _cairo_xlib_xcb_surface_create (dpy, scr, NULL, NULL,
-					   cairo_xcb_surface_create_for_bitmap (XGetXCBConnection (dpy),
-										(xcb_screen_t *) scr,
-										bitmap,
-										width, height));
-}
-
-#if CAIRO_HAS_XLIB_XRENDER_SURFACE
 static xcb_screen_t *
 _cairo_xcb_screen_from_root (xcb_connection_t *connection,
 			     xcb_window_t id)
@@ -548,6 +533,24 @@ _cairo_xcb_screen_from_root (xcb_connection_t *connection,
 
     return NULL;
 }
+
+cairo_surface_t *
+cairo_xlib_surface_create_for_bitmap (Display  *dpy,
+				      Pixmap	bitmap,
+				      Screen   *scr,
+				      int	width,
+				      int	height)
+{
+    xcb_connection_t *connection = XGetXCBConnection (dpy);
+    xcb_screen_t *screen = _cairo_xcb_screen_from_root (connection, (xcb_window_t) scr->root);
+    return _cairo_xlib_xcb_surface_create (dpy, scr, NULL, NULL,
+					   cairo_xcb_surface_create_for_bitmap (connection,
+										screen,
+										bitmap,
+										width, height));
+}
+
+#if CAIRO_HAS_XLIB_XRENDER_SURFACE
 cairo_surface_t *
 cairo_xlib_surface_create_with_xrender_format (Display		    *dpy,
 					       Drawable		    drawable,
-- 
2.1.3

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.