summaryrefslogtreecommitdiff
path: root/gtk/gtkmain.c
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2014-06-23 17:55:55 -0400
committerJasper St. Pierre <jstpierre@mecheye.net>2014-06-23 17:55:55 -0400
commite76f41b788ef242eab8d63605969c878bcfd7139 (patch)
tree8a5cd0ccbdd134493b6c1fe5d880a758974b932f /gtk/gtkmain.c
parentf4c2c4c6671b783ae47187ef69765ae81367da0d (diff)
downloadgtk+-e76f41b788ef242eab8d63605969c878bcfd7139.tar.gz
gtkmain: Rearrange code
Prevent a segfault in unknown circumstances, and break the ignore deprecations wrapper out from the if statement so that we don't cover too much ground by accident.
Diffstat (limited to 'gtk/gtkmain.c')
-rw-r--r--gtk/gtkmain.c43
1 files changed, 25 insertions, 18 deletions
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 5a9353e3c0..77d25437e7 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -1647,25 +1647,32 @@ gtk_main_do_event (GdkEvent *event)
break;
case GDK_EXPOSE:
- G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- if (event->any.window && gtk_widget_get_double_buffered (event_widget))
+ if (event->any.window)
{
- /* We handle exposes only on native windows, relying on the
- * draw() handler to propagate down to non-native windows.
- * This is ok now that we child windows always are considered
- * (semi)transparent.
- */
- if (gdk_window_has_native (event->expose.window))
- {
- gdk_window_begin_paint_region (event->any.window, event->expose.region);
- gtk_widget_send_expose (event_widget, event);
- gdk_window_end_paint (event->any.window);
- }
- }
- else
- G_GNUC_END_IGNORE_DEPRECATIONS
- {
- gtk_widget_send_expose (event_widget, event);
+ gboolean is_double_buffered;
+
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
+ is_double_buffered = gtk_widget_get_double_buffered (event_widget);
+ G_GNUC_END_IGNORE_DEPRECATIONS;
+
+ if (is_double_buffered)
+ {
+ /* We handle exposes only on native windows, relying on the
+ * draw() handler to propagate down to non-native windows.
+ * This is ok now that we child windows always are considered
+ * (semi)transparent.
+ */
+ if (gdk_window_has_native (event->expose.window))
+ {
+ gdk_window_begin_paint_region (event->any.window, event->expose.region);
+ gtk_widget_send_expose (event_widget, event);
+ gdk_window_end_paint (event->any.window);
+ }
+ }
+ else
+ {
+ gtk_widget_send_expose (event_widget, event);
+ }
}
break;