]> Pileus Git - grits/commitdiff
Init earlier on gtkglext
authorAndy Spencer <andy753421@gmail.com>
Thu, 17 Nov 2011 08:08:12 +0000 (08:08 +0000)
committerAndy Spencer <andy753421@gmail.com>
Thu, 17 Nov 2011 08:14:43 +0000 (08:14 +0000)
configure.ac
src/grits-demo.c
src/grits-opengl.c
src/grits-opengl.h
src/grits-test.c

index 70aeff9ec49c03d8aa82db85056cb4c655a04f49..9746a915e0055191a08a64d83d1855c97d413e31 100644 (file)
@@ -1,4 +1,4 @@
-m4_define([grits_release], [0.6])
+m4_define([grits_release], [0.6.1-p1])
 m4_define([grits_version], [2:0:0])
 m4_define([grits_subdir],  [grits2])
 
index d9532f4cc65248ffa7a8bb50876b2b91ff8d91ff..76aa3577ed71c9fbce11f0d5b886a738636005d2 100644 (file)
@@ -17,6 +17,7 @@
 
 #include <config.h>
 #include <gtk/gtk.h>
+#include <gtk/gtkgl.h>
 #include <gdk/gdkkeysyms.h>
 
 #include "grits.h"
@@ -169,6 +170,8 @@ int main(int argc, char **argv)
        g_thread_init(NULL);
        gdk_threads_init();
        gtk_init(&argc, &argv);
+       gtk_gl_init(&argc, &argv);
+       grits_init(&argc, &argv);
 
        prefs   = grits_prefs_new(NULL, NULL);
        plugins = grits_plugins_new(g_getenv("GRITS_PLUGIN_PATH"), prefs);
index 794d776f660a6471f08c273c7fb926d7ce5ba9fd..fef05a77bed6688d1cb044c127eb61c8163219d0 100644 (file)
@@ -40,6 +40,8 @@
 #include "grits-util.h"
 #include "roam.h"
 
+static GdkGLConfig *glconfig;
+
 // #define ROAM_DEBUG
 
 /* Tessellation, "finding intersecting triangles" */
@@ -527,6 +529,19 @@ static void _objects_free(gpointer value)
 }
 
 G_DEFINE_TYPE(GritsOpenGL, grits_opengl, GRITS_TYPE_VIEWER);
+void grits_init(int *argc, char ***argv)
+{
+       glconfig = gdk_gl_config_new_by_mode(
+                       GDK_GL_MODE_RGBA   | GDK_GL_MODE_DEPTH |
+                       GDK_GL_MODE_DOUBLE | GDK_GL_MODE_ALPHA);
+       if (!glconfig) {
+               g_warning("Failed to create glconfig, unsupported:%s%s%s%s.",
+                       gdk_gl_config_new_by_mode(GDK_GL_MODE_RGBA)   ? "" : " RGBA",
+                       gdk_gl_config_new_by_mode(GDK_GL_MODE_DEPTH)  ? "" : " DEPTH",
+                       gdk_gl_config_new_by_mode(GDK_GL_MODE_DOUBLE) ? "" : " DOUBLE",
+                       gdk_gl_config_new_by_mode(GDK_GL_MODE_ALPHA)  ? "" : " ALPHA");
+       }
+}
 static void grits_opengl_init(GritsOpenGL *opengl)
 {
        g_debug("GritsOpenGL: init");
@@ -536,15 +551,21 @@ static void grits_opengl_init(GritsOpenGL *opengl)
        opengl->sphere_lock  = g_mutex_new();
 
        /* Set OpenGL before "realize" */
-       GdkGLConfig *glconfig = gdk_gl_config_new_by_mode(
-                       GDK_GL_MODE_RGBA   | GDK_GL_MODE_DEPTH |
-                       GDK_GL_MODE_DOUBLE | GDK_GL_MODE_ALPHA);
+       if (!glconfig) {
+               g_warning("recreating glconfig");
+               glconfig = gdk_gl_config_new_by_mode(
+                               GDK_GL_MODE_RGBA   | GDK_GL_MODE_DEPTH |
+                               GDK_GL_MODE_DOUBLE | GDK_GL_MODE_ALPHA);
+       }
        if (!glconfig)
-               g_error("Failed to create glconfig");
+               g_error("Failed to create glconfig, unsupported:%s%s%s%s.",
+                       gdk_gl_config_new_by_mode(GDK_GL_MODE_RGBA)   ? "" : " RGBA",
+                       gdk_gl_config_new_by_mode(GDK_GL_MODE_DEPTH)  ? "" : " DEPTH",
+                       gdk_gl_config_new_by_mode(GDK_GL_MODE_DOUBLE) ? "" : " DEPTH",
+                       gdk_gl_config_new_by_mode(GDK_GL_MODE_ALPHA)  ? "" : " ALPHA");
        if (!gtk_widget_set_gl_capability(GTK_WIDGET(opengl),
                                glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE))
                g_error("GL lacks required capabilities");
-       g_object_unref(glconfig);
 
        /* Finish OpenGL init after it's realized */
        g_signal_connect(opengl, "realize", G_CALLBACK(on_realize), NULL);
index 037950927e98c3e40fec23d6c8520510c3f09ec5..1a5705655f65f5495952fb5033c9e45d9163246d 100644 (file)
@@ -60,4 +60,7 @@ GType grits_opengl_get_type(void);
 /* Methods */
 GritsViewer *grits_opengl_new(GritsPlugins *plugins, GritsPrefs *prefs);
 
+/* Misc */
+void grits_init(int *argc, char ***argv);
+
 #endif
index 52e014530b91be7304c270ce76d70b1786bb97c2..28c30aea83cee6ec70ac5748488f79875512f7bd 100644 (file)
@@ -70,6 +70,7 @@ int main(int argc, char **argv)
        gdk_threads_init();
        gtk_init(&argc, &argv);
        gtk_gl_init(&argc, &argv);
+       grits_init(&argc, &argv);
 
        prefs   = grits_prefs_new(NULL, NULL);
        plugins = grits_plugins_new(g_getenv("GRITS_PLUGIN_PATH"), prefs);