X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/d3849f301a5aca6d5ce29efbdbdfc8da5b14c3d5..19406f20ddb51fdcf94bf9a91c12c53717bad724:/gdk/alien/glue.c diff --git a/gdk/alien/glue.c b/gdk/alien/glue.c index 8b56b7f..e734784 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,25 +21,46 @@ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $Id: glue.c,v 1.4 2007/04/06 14:25:20 espen Exp $ */ +/* $Id: glue.c,v 1.7 2007/06/02 19:17:47 espen Exp $ */ #include -#include -struct _GdkDisplayX11 -{ - GdkDisplay parent_instance; - Display *xdisplay; -}; +#ifdef GDK_WINDOWING_X11 +#include +#elif defined (G_OS_WIN32) +#include +#endif gint clg_gdk_connection_number (GdkDisplay *display) { - return ConnectionNumber (((struct _GdkDisplayX11 *)display)->xdisplay); +#ifdef GDK_WINDOWING_X11 + return ConnectionNumber (GDK_DISPLAY_XDISPLAY (display)); +#else + return -1; +#endif } -GdkWindow *clg_gdk_cairo_xlib_surface_get_window (cairo_surface_t *surface) +GdkWindow *clg_gdk_cairo_surface_get_window (cairo_surface_t *surface) { - return gdk_window_lookup (cairo_xlib_surface_get_drawable (surface)); + /* 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 = (HDC)cairo_win32_surface_get_dc (surface); + if (hdc) + return gdk_window_lookup ((GdkNativeWindow)hdc); + else + return NULL; +#else + return NULL; +#endif }