diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-06-23 17:55:55 -0400 |
---|---|---|
committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-06-23 17:55:55 -0400 |
commit | e76f41b788ef242eab8d63605969c878bcfd7139 (patch) | |
tree | 8a5cd0ccbdd134493b6c1fe5d880a758974b932f /gtk/gtkmain.c | |
parent | f4c2c4c6671b783ae47187ef69765ae81367da0d (diff) | |
download | gtk+-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.c | 43 |
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; |