[gtkglarea/jjardon/gtk3: 11/21] examples: In GTK+3 "expose_event" is now "draw" signal



commit 7ea83cd722f1f9615d2edb8b3ac01162d01f9398
Author: Javier Jardón <jjardon gnome org>
Date:   Mon Mar 24 18:32:46 2014 +0000

    examples: In GTK+3 "expose_event" is now "draw" signal

 examples/gtkglarea_demo.c |   22 ++++++++--------------
 examples/shaders.c        |   14 +++++---------
 examples/simple.c         |    8 ++------
 examples/viewlw.c         |   11 +++--------
 examples/zktor.c          |    8 ++------
 5 files changed, 20 insertions(+), 43 deletions(-)
---
diff --git a/examples/gtkglarea_demo.c b/examples/gtkglarea_demo.c
index 0dfd19e..4ad1bcf 100644
--- a/examples/gtkglarea_demo.c
+++ b/examples/gtkglarea_demo.c
@@ -50,7 +50,7 @@ GtkWidget* create_glarea         (void);
 gint       glarea_button_release (GtkWidget*, GdkEventButton*);
 gint       glarea_button_press   (GtkWidget*, GdkEventButton*);
 gint       glarea_motion_notify  (GtkWidget*, GdkEventMotion*);
-gint       glarea_draw           (GtkWidget*, GdkEventExpose*);
+gint       glarea_draw           (GtkWidget*, cairo_t*, gpointer);
 gint       glarea_reshape        (GtkWidget*, GdkEventConfigure*);
 gint       glarea_init           (GtkWidget*);
 gint       glarea_destroy        (GtkWidget*);
@@ -150,10 +150,10 @@ GtkWidget* create_glarea (void) {
   g_signal_connect (G_OBJECT(glarea), "motion-notify-event",
                     G_CALLBACK(glarea_motion_notify), NULL);
 
-  /* expose_event - The window was exposed and the contents   */
-  /*                need to be redrawn.                       */
+  /* draw - The window was exposed and the contents           */
+  /*        need to be redrawn.                               */
 
-  g_signal_connect (G_OBJECT(glarea), "expose-event",
+  g_signal_connect (G_OBJECT(glarea), "draw",
                     G_CALLBACK(glarea_draw), NULL);
 
   /* configure_event - The window has been resized. You will  */
@@ -298,22 +298,16 @@ gint glarea_motion_notify (GtkWidget* widget, GdkEventMotion* event) {
 
 /*****************************************************************************/
 /*                                                                           */
-/* Function: glarea_draw (GtkWidget*, GdkEventExpose*)                       */
+/* Function: glarea_draw (GtkWidget*, cairo_t *cr, gpointer user_data)       */
 /*                                                                           */
 /* This is the function that should render your scene to the GtkGLArea. It   */
-/* can be used as a callback to the 'Expose' event.                          */
+/* can be used as a callback to the 'draw' signal.                           */
 /*                                                                           */
 /*****************************************************************************/
 
-gint glarea_draw (GtkWidget* widget, GdkEventExpose* event) {
+gboolean glarea_draw (GtkWidget* widget, cairo_t *cr, gpointer user_data) {
 
-  /* Draw only on the last expose event. */
-
-  if (event->count > 0) {
-    return(TRUE);
-  }
-
-  g_print ("Expose Event\n");
+  g_print ("Draw Signal\n");
 
   /* gtk_gl_area_make_current MUST be called before rendering */
   /* into the GtkGLArea.                                      */
diff --git a/examples/shaders.c b/examples/shaders.c
index 53ab430..545ae37 100644
--- a/examples/shaders.c
+++ b/examples/shaders.c
@@ -40,7 +40,7 @@
 void       create_shader         (void);
 void       create_texture_2D     (void);
 GtkWidget* create_glarea         (void);
-gint       glarea_draw           (GtkWidget*, GdkEventExpose*);
+gint       glarea_draw           (GtkWidget*, cairo_t*, gpointer);
 gint       glarea_draw_scene     (void);
 gint       glarea_reshape        (GtkWidget*, GdkEventConfigure*);
 gint       glarea_init           (GtkWidget*);
@@ -244,7 +244,7 @@ GtkWidget* create_glarea (void) {
 
   gtk_widget_set_events(GTK_WIDGET(glarea), GDK_EXPOSURE_MASK);
 
-  g_signal_connect (G_OBJECT(glarea), "expose-event",
+  g_signal_connect (G_OBJECT(glarea), "draw",
                     G_CALLBACK(glarea_draw), NULL);
 
   g_signal_connect (G_OBJECT(glarea), "configure-event",
@@ -285,18 +285,14 @@ gint glarea_draw_scene (void) {
 
 /*****************************************************************************/
 /*                                                                           */
-/* Function: glarea_draw (GtkWidget*, GdkEventExpose*)                       */
+/* Function: glarea_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data)*/
 /*                                                                           */
 /* This is the function that should render your scene to the GtkGLArea. It   */
-/* can be used as a callback to the 'Expose' event.                          */
+/* can be used as a callback to the 'draw' signal.                           */
 /*                                                                           */
 /*****************************************************************************/
 
-gint glarea_draw (GtkWidget* widget, GdkEventExpose* event) {
-
-  if (event->count > 0) {
-    return(TRUE);
-  }
+gboolean glarea_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data) {
 
   if (gtk_gl_area_make_current(GTK_GL_AREA(widget))) {
 
diff --git a/examples/simple.c b/examples/simple.c
index 4c1081c..ff08266 100644
--- a/examples/simple.c
+++ b/examples/simple.c
@@ -40,12 +40,8 @@ gint init(GtkWidget *widget)
 
 
 /* When widget is exposed it's contents are redrawn. */
-gint draw(GtkWidget *widget, GdkEventExpose *event)
+gboolean draw (GtkWidget *widget, cairo_t *cr, gpointer data)
 {
-  /* Draw only last expose. */
-  if (event->count > 0)
-    return TRUE;
-
   /* OpenGL functions can be called only if make_current returns true */
   if (gtk_gl_area_make_current(GTK_GL_AREA(widget)))
     {
@@ -131,7 +127,7 @@ int main(int argc, char **argv)
 
   /* Connect signal handlers */
   /* Redraw image when exposed. */
-  g_signal_connect(G_OBJECT(glarea), "expose-event",
+  g_signal_connect(G_OBJECT(glarea), "draw",
                    G_CALLBACK(draw), NULL);
   /* When window is resized viewport needs to be resized also. */
   g_signal_connect(G_OBJECT(glarea), "configure-event",
diff --git a/examples/viewlw.c b/examples/viewlw.c
index db2db5e..fa18d60 100644
--- a/examples/viewlw.c
+++ b/examples/viewlw.c
@@ -101,18 +101,13 @@ void perspectiveGL(GLdouble fovY, GLdouble aspect, GLdouble zNear, GLdouble zFar
     glFrustum(-fW, fW, -fH, fH, zNear, zFar);
 }
 
-gint glarea_expose(GtkWidget *widget, GdkEventExpose *event)
+gboolean glarea_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data)
 {
   GLfloat m[4][4];
 
   GtkGLArea *glarea = GTK_GL_AREA(widget);
   mesh_info *info = (mesh_info*) g_object_get_data (G_OBJECT (widget), "mesh_info");
 
-  /* draw only last expose */
-  if (event->count > 0) {
-    return TRUE;
-  }
-
   /* OpenGL calls can be done only if make_current returns true */
   if (gtk_gl_area_make_current(glarea)) {
     /* basic initialization */
@@ -332,8 +327,8 @@ gint show_lwobject(char const *lwobject_name)
                        GDK_BUTTON_RELEASE_MASK|
                        GDK_POINTER_MOTION_MASK|
                        GDK_POINTER_MOTION_HINT_MASK);
-  g_signal_connect (G_OBJECT(glarea), "expose-event",
-                    G_CALLBACK(glarea_expose), NULL);
+  g_signal_connect (G_OBJECT(glarea), "draw",
+                    G_CALLBACK(glarea_draw), NULL);
   g_signal_connect (G_OBJECT(glarea), "motion-notify-event",
                     G_CALLBACK(glarea_motion_notify), NULL);
   g_signal_connect (G_OBJECT(glarea), "button-press-event",
diff --git a/examples/zktor.c b/examples/zktor.c
index 75e4524..29b0e3f 100644
--- a/examples/zktor.c
+++ b/examples/zktor.c
@@ -748,12 +748,8 @@ gint init(GtkWidget *widget)
 
 
 /* When widget is exposed it's contents are redrawn. */
-gint draw(GtkWidget *widget, GdkEventExpose *event)
+gboolean  draw (GtkWidget *widget, cairo_t *cr, gpointer user_data)
 {
-  /* Draw only last expose. */
-  if (event->count > 0)
-    return TRUE;
-
   if (gtk_gl_area_make_current(GTK_GL_AREA(widget)))
     game_render();
 
@@ -910,7 +906,7 @@ int main(int argc, char **argv)
 
   /* Connect signal handlers */
   /* Redraw image when exposed. */
-  g_signal_connect(G_OBJECT(glarea), "expose-event",
+  g_signal_connect(G_OBJECT(glarea), "draw",
                    G_CALLBACK(draw), NULL);
   /* When window is resized viewport needs to be resized also. */
   g_signal_connect(G_OBJECT(glarea), "configure-event",


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]