X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=examples%2Fgl%2Fgl.c;h=1ece4c2d84ebcbf5fdf58196177a465b895abce8;hp=1f8448667761e90446ab79b9e5ac83bb1a5e8ef0;hb=5c17e7d79895982036139dcffb5c17cefb1d4d9f;hpb=ef7f210460467324ba3707c6892f44be7f1fe939 diff --git a/examples/gl/gl.c b/examples/gl/gl.c index 1f84486..1ece4c2 100644 --- a/examples/gl/gl.c +++ b/examples/gl/gl.c @@ -13,7 +13,7 @@ ************************/ #if defined(SYS_CAIRO) gpointer setup(GtkWidget *widget) { return NULL; } -gboolean expose(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) +gboolean expose(GtkWidget *widget, gpointer data, gpointer user_data) { GtkAllocation alloc; gtk_widget_get_allocation(widget, &alloc); @@ -50,7 +50,7 @@ gpointer setup(GtkWidget *widget) glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE); return NULL; } -gboolean expose(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) +gboolean expose(GtkWidget *widget, gpointer data, gpointer user_data) { GtkAllocation alloc; gtk_widget_get_allocation(widget, &alloc); @@ -80,7 +80,7 @@ gboolean expose(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) #include void realize(GtkWidget *widget, gpointer user_data) { - gdk_window_ensure_native(gtk_widget_get_window(widget)); + gdk_window_ensure_native(gtk_widget_get_window(widget)); } gpointer setup(GtkWidget *widget) { @@ -100,17 +100,22 @@ gpointer setup(GtkWidget *widget) XVisualInfo *xvinfo = glXChooseVisual(xdisplay, nscreen, attribs); GLXContext context = glXCreateContext(xdisplay, xvinfo, 0, True); - /* Fix up colormap */ + /* Fix up visual/colormap */ +#if GTK_CHECK_VERSION(3,0,0) + GdkVisual *visual = gdk_x11_screen_lookup_visual(screen, xvinfo->visualid); + gtk_widget_set_visual(widget, visual); +#else GdkVisual *visual = gdk_x11_screen_lookup_visual(screen, xvinfo->visualid); GdkColormap *cmap = gdk_colormap_new(visual, FALSE); gtk_widget_set_colormap(widget, cmap); +#endif /* Disable GTK double buffering */ gtk_widget_set_double_buffered(widget, FALSE); return context; } -gboolean expose(GtkWidget *widget, GdkEventExpose *event, GLXContext context) +gboolean expose(GtkWidget *widget, gpointer data, GLXContext context) { /* Make current */ Display *xdisplay = GDK_SCREEN_XDISPLAY(gdk_screen_get_default()); @@ -168,7 +173,7 @@ gpointer setup(GtkWidget *widget) gtk_widget_set_double_buffered(widget, FALSE); return FALSE; } -gboolean expose(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) +gboolean expose(GtkWidget *widget, gpointer data, gpointer user_data) { GtkWidget *toplevel = gtk_widget_get_toplevel(widget); GdkWindow *window = gtk_widget_get_window(widget); @@ -270,7 +275,7 @@ gboolean configure(GtkWidget *widget, GdkEventConfigure *event, NSOpenGLContext [ctx update]; return FALSE; } -gboolean expose(GtkWidget *widget, GdkEventExpose *event, NSOpenGLContext *ctx) +gboolean expose(GtkWidget *widget, gpointer data, NSOpenGLContext *ctx) { gdk_window_ensure_native(gtk_widget_get_window(widget)); @@ -304,7 +309,7 @@ gboolean expose(GtkWidget *widget, GdkEventExpose *event, NSOpenGLContext *ctx) ****************************/ #else gpointer setup(GtkWidget *widget) { return NULL; } -gboolean expose(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) +gboolean expose(GtkWidget *widget, gpointer data, gpointer user_data) { g_message("unimplemented"); return FALSE; @@ -318,7 +323,7 @@ gboolean expose(GtkWidget *widget, GdkEventExpose *event, gpointer user_data) ***************/ gboolean key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_data) { - if (event->keyval == GDK_q) + if (event->keyval == GDK_KEY_q) gtk_main_quit(); return FALSE; } @@ -326,7 +331,7 @@ int main(int argc, char **argv) { gtk_init_check(&argc, &argv); GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - GtkWidget *box = gtk_vbox_new(FALSE, 5); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); GtkWidget *draw = gtk_drawing_area_new(); GtkWidget *label = gtk_label_new("Hello, World"); GtkWidget *button = gtk_button_new_with_label("Hello, World"); @@ -334,7 +339,11 @@ int main(int argc, char **argv) g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(window, "key-press-event", G_CALLBACK(key_press), NULL); //g_signal_connect(draw, "configure-event", G_CALLBACK(configure), data); +#if GTK_CHECK_VERSION(3,0,0) + g_signal_connect(draw, "draw", G_CALLBACK(expose), data); +#else g_signal_connect(draw, "expose-event", G_CALLBACK(expose), data); +#endif gtk_widget_set_size_request(draw, 300, 300); gtk_widget_set_size_request(button, -1, 50); gtk_box_pack_start(GTK_BOX(box), label, FALSE, TRUE, 0);