X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/112ac1d33aa8f9b7f3d2f9542d15431f152b1d35..8a32b4c6927e4345cbc30c854261527fdf2518dd:/gdk/alien/glue.c diff --git a/gdk/alien/glue.c b/gdk/alien/glue.c index b2bcc10..94109b9 100644 --- a/gdk/alien/glue.c +++ b/gdk/alien/glue.c @@ -1,5 +1,5 @@ /* Common Lisp bindings for GTK+ v2.x - * Copyright 1999-2005 Espen S. Johnsen + * Copyright 1999-2007 Espen S. Johnsen * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the @@ -21,19 +21,44 @@ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $Id: glue.c,v 1.3 2005-04-23 16:48:50 espen Exp $ */ +/* $Id: glue.c,v 1.6 2007-06-01 09:23:41 espen Exp $ */ #include + +#ifdef GDK_WINDOWING_X11 #include +#endif -struct _GdkDisplayX11 +gint clg_gdk_connection_number (GdkDisplay *display) { - GdkDisplay parent_instance; - Display *xdisplay; -}; +#ifdef GDK_WINDOWING_X11 + return ConnectionNumber (GDK_DISPLAY_XDISPLAY (display)); +#else + return -1; +#endif +} -gint clg_gdk_connection_number (GdkDisplay *display) + +GdkWindow *clg_gdk_cairo_surface_get_window (cairo_surface_t *surface) { - return ConnectionNumber (((struct _GdkDisplayX11 *)display)->xdisplay); + /* If 'surface_info_key' had been public we would have had a + portable way to find the GdkWindow of a Cairo surface. */ + +#ifdef GDK_WINDOWING_X11 + Display* display = cairo_xlib_surface_get_display (surface); + Drawable window = cairo_xlib_surface_get_drawable (surface); + if (display && window) + return gdk_window_lookup_for_display (window, display); + else + return NULL; +#elif defined (G_OS_WIN32) + HDC hdc = cairo_win32_surface_get_dc (surface); + if (hdc) + return gdk_window_lookup (hdc); + else + return NULL; +#else + return NULL; +#endif }