- g_signal_connect( G_OBJECT( widget ), "hierarchy-changed", G_CALLBACK( glwidget_enable_gl ), 0 );
+static const config_t configs_with_depth[] =
+ {
+ {
+ "colour-buffer = 32bpp, depth-buffer = 32bpp",
+ config_rgba32_depth32,
+ },
+ {
+ "colour-buffer = 32bpp, depth-buffer = 24bpp",
+ config_rgba32_depth24,
+ },
+ {
+ "colour-buffer = 32bpp, depth-buffer = 16bpp",
+ config_rgba32_depth16,
+ },
+ {
+ "colour-buffer = 32bpp, depth-buffer = auto",
+ config_rgba32_depth,
+ },
+ {
+ "colour-buffer = 16bpp, depth-buffer = 16bpp",
+ config_rgba_depth16,
+ },
+ {
+ "colour-buffer = auto, depth-buffer = auto",
+ config_rgba_depth,
+ },
+ };
+
+static GdkGLConfig *glconfig_new_with_depth()
+{
+ for (configs_iterator i = configs_with_depth, end = configs_with_depth + 6; i != end; ++i) {
+ if (auto glconfig = gdk_gl_config_new(i->attribs)) {
+ globalOutputStream() << "OpenGL window configuration: " << i->name << "\n";
+ return glconfig;
+ }
+ }
+ globalOutputStream() << "OpenGL window configuration: colour-buffer = auto, depth-buffer = auto (fallback)\n";
+ return gdk_gl_config_new_by_mode((GdkGLConfigMode) (GDK_GL_MODE_RGBA | GDK_GL_MODE_DOUBLE | GDK_GL_MODE_DEPTH));
+}