diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2011-02-26 14:44:29 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2011-02-26 14:44:29 -0500 |
commit | 287d91e5f994d059232731133870ba9e95c8e418 (patch) | |
tree | 1a1e6828b9d616632818396476b5b6a3a3df4cb6 /gdk/gdkdisplaymanager.c | |
parent | b5134619a047cd208257ff0adc7d3aeb54bdd426 (diff) | |
parent | f04504ac94741171ac63de04a8bd29cbe210427a (diff) | |
download | gtk+-287d91e5f994d059232731133870ba9e95c8e418.tar.gz |
Merge remote-tracking branch 'origin/master' into gdk-backend-wayland
Conflicts:
gdk/gdkdisplaymanager.c
Diffstat (limited to 'gdk/gdkdisplaymanager.c')
-rw-r--r-- | gdk/gdkdisplaymanager.c | 53 |
1 files changed, 45 insertions, 8 deletions
diff --git a/gdk/gdkdisplaymanager.c b/gdk/gdkdisplaymanager.c index f5bbc9508b..6a2d071af6 100644 --- a/gdk/gdkdisplaymanager.c +++ b/gdk/gdkdisplaymanager.c @@ -60,6 +60,43 @@ * The purpose of the #GdkDisplayManager singleton object is to offer * notification when displays appear or disappear or the default display * changes. + * + * You can use gdk_display_manager_get() to obtain the GdkDisplayManager + * singleton, but that should be rarely necessary. Typically, initializing + * GTK+ opens a display that you can work with without ever accessing the + * GdkDisplayManager. + * + * The GDK library can be built with support for multiple backends. + * The GdkDisplayManager object determines which backend is used + * at runtime. + * + * When writing backend-specific code that is supposed to work with + * multiple GDK backends, you have to consider both compile time and + * runtime. At compile time, use the #GDK_WINDOWING_X11, #GDK_WINDOWING_WIN32 + * macros, etc. to find out which backends are present in the GDK library + * you are building your application against. At runtime, use type-check + * macros like GDK_IS_X11_DISPLAY() to find out which backend is in use: + * + * <example id="backend-specific"> + * <title>Backend-specific code</title> + * <programlisting> + * #ifdef GDK_WINDOWING_X11 + * if (GDK_IS_X11_DISPLAY (display)) + * { + * /* make X11-specific calls here */ + * } + * else + * #endif + * #ifdef GDK_WINDOWING_QUARTZ + * if (GDK_IS_QUARTZ_DISPLAY (display)) + * { + * /* make Quartz-specific calls here */ +* } + * else + * #endif + * g_error ("Unsupported GDK backend"); + * </programlisting> + * </example> */ @@ -172,9 +209,9 @@ gdk_display_manager_get_property (GObject *object, * Gets the singleton #GdkDisplayManager object. * * When called for the first time, this function consults the - * <envar>GDK_BACKEND</envar> to find out which of the supported - * GDK backends to use (in case GDK has been compiled with multiple - * backends). + * <envar>GDK_BACKEND</envar> environment variable to find out which + * of the supported GDK backends to use (in case GDK has been compiled + * with multiple backends). * * Returns: (transfer none): The global #GdkDisplayManager singleton; * gdk_parse_args(), gdk_init(), or gdk_init_check() must have @@ -192,11 +229,6 @@ gdk_display_manager_get (void) const gchar *backend; backend = g_getenv ("GDK_BACKEND"); -#ifdef GDK_WINDOWING_X11 - if (backend == NULL || strcmp (backend, "x11") == 0) - manager = g_object_new (gdk_x11_display_manager_get_type (), NULL); - else -#endif #ifdef GDK_WINDOWING_QUARTZ if (backend == NULL || strcmp (backend, "quartz") == 0) manager = g_object_new (gdk_quartz_display_manager_get_type (), NULL); @@ -212,6 +244,11 @@ gdk_display_manager_get (void) manager = g_object_new (gdk_wayland_display_manager_get_type (), NULL); else #endif +#ifdef GDK_WINDOWING_X11 + if (backend == NULL || strcmp (backend, "x11") == 0) + manager = g_object_new (gdk_x11_display_manager_get_type (), NULL); + else +#endif if (backend != NULL) g_error ("Unsupported GDK backend: %s", backend); else |