From abb945e76bc1b7f363723a28a7ba518bc3ca9672 Mon Sep 17 00:00:00 2001
From: Werner Almesberger <werner@openmoko.org>
Date: Tue, 28 Sep 2010 07:12:20 -0300
Subject: [PATCH] Added expose events for auxiliary projections.

- solidify/level.c (expose_event, level): renamed expose_event to
  expose_event_xy, for consistency with new expose event handlers
- solidify/level.c (expose_event_xz, expose_event_zy, level): added expose
  event handlers for the auxiliary projections
- solidify/level.c (level): the drawing areas receive an expose event when
  becoming visible, so there's no need to explicitly initilize them
---
 solidify/level.c | 28 +++++++++++++++++++++++-----
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/solidify/level.c b/solidify/level.c
index 7030b1f..c8fb8b7 100644
--- a/solidify/level.c
+++ b/solidify/level.c
@@ -223,7 +223,7 @@ static gboolean scroll_event(GtkWidget *widget, GdkEventScroll *event,
 }
 
 
-static gboolean expose_event(GtkWidget *widget, GdkEventExpose *event,
+static gboolean expose_event_xy(GtkWidget *widget, GdkEventExpose *event,
     gpointer user_data)
 {
 	draw_image(widget, user_data, has_osd);
@@ -231,6 +231,22 @@ static gboolean expose_event(GtkWidget *widget, GdkEventExpose *event,
 }
 
 
+static gboolean expose_event_xz(GtkWidget *widget, GdkEventExpose *event,
+    gpointer user_data)
+{
+	draw_xz(widget, user_data, -1);
+	return TRUE;
+}
+
+
+static gboolean expose_event_zy(GtkWidget *widget, GdkEventExpose *event,
+    gpointer user_data)
+{
+	draw_zy(widget, user_data, -1);
+	return TRUE;
+}
+
+
 static gboolean motion_notify_event(GtkWidget *widget, GdkEventMotion *event,
     gpointer data)
 {
@@ -280,14 +296,16 @@ void level(GtkWidget *canvas, struct face *f)
 	gtk_container_add(GTK_CONTAINER(evbox), xy);
 
 	gtk_widget_show_all(canvas);
-	draw_image(xy, f, 0);
-	draw_xz(xz, f, -1);
-	draw_zy(zy, f, -1);
+	has_osd = 0;
 
 	g_signal_connect(G_OBJECT(evbox), "scroll-event",
 	    G_CALLBACK(scroll_event), f);
 	g_signal_connect(G_OBJECT(xy), "expose-event",
-	    G_CALLBACK(expose_event), f);
+	    G_CALLBACK(expose_event_xy), f);
+	g_signal_connect(G_OBJECT(xz), "expose-event",
+	    G_CALLBACK(expose_event_xz), f);
+	g_signal_connect(G_OBJECT(zy), "expose-event",
+	    G_CALLBACK(expose_event_zy), f);
 	g_signal_connect(G_OBJECT(xy), "motion-notify-event",
 	    G_CALLBACK(motion_notify_event), f);
 }