X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=src%2Fopengl.c;h=c6a3b28c2ead6421975540003def7dd6f4fa366e;hp=e9d4a7e3a0a6d44ea35d6f361e4b8ec1f4db4f8d;hb=d527bfdb9682b1824e1c2df318a92291aaa48860;hpb=f21f94748e256058ee09dfe145c06c28473695fb diff --git a/src/opengl.c b/src/opengl.c index e9d4a7e..c6a3b28 100644 --- a/src/opengl.c +++ b/src/opengl.c @@ -5,6 +5,8 @@ #include #include +#include "aweather-gui.h" + static gboolean expose_start(GtkWidget *da, GdkEventExpose *event, gpointer user_data) { g_message("opengl:expose_start"); @@ -37,6 +39,7 @@ static gboolean expose_end(GtkWidget *da, GdkEventExpose *event, gpointer user_d } static gboolean configure_start(GtkWidget *da, GdkEventConfigure *event, gpointer user_data) { + g_message("opengl:configure_start"); GdkGLContext *glcontext = gtk_widget_get_gl_context(da); GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(da); @@ -83,13 +86,24 @@ static gboolean configure_start(GtkWidget *da, GdkEventConfigure *event, gpointe } static gboolean configure_end(GtkWidget *da, GdkEventConfigure *event, gpointer user_data) { + g_message("opengl:configure_end"); GdkGLDrawable *gldrawable = gdk_gl_drawable_get_current(); gdk_gl_drawable_gl_end(gldrawable); return FALSE; } -gboolean opengl_init(GtkDrawingArea *drawing, GtkNotebook *config) +gboolean opengl_init(AWeatherGui *gui) { + GtkDrawingArea *drawing = aweather_gui_get_drawing(gui); + + 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_error("Failed to create glconfig"); + if (!gtk_widget_set_gl_capability(GTK_WIDGET(drawing), glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE)) + g_error("GL lacks required capabilities"); + /* Set up OpenGL Stuff */ g_signal_connect (drawing, "configure-event", G_CALLBACK(configure_start), NULL); g_signal_connect_after(drawing, "configure-event", G_CALLBACK(configure_end), NULL);