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

Bryce Harrington <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
On Sat, Dec 06, 2014 at 05:10:33PM +0100, Uli Schlachter wrote:
> 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.

Hi Uli,

Both of these patches look fine to me.  Would you like me to test and
land them, or are you hoping for further feedback first?

Bryce
 
> 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
-- 
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.