summaryrefslogtreecommitdiff
path: root/gtk2_ardour/splash.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-03-04 18:19:05 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2013-03-04 18:19:05 +0000
commit4830bd633f6238c11e5d95d83dc0bb35cc4143cb (patch)
treea6ff5dd4008f413795569eff47157b64ffb23f6f /gtk2_ardour/splash.cc
parentfbf7e4385bbc88c336fd78aac5cf576c5424f0dd (diff)
fix display of splash screen (at least on X11)
git-svn-id: svn://localhost/ardour2/branches/3.0@14134 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/splash.cc')
-rw-r--r--gtk2_ardour/splash.cc19
1 files changed, 16 insertions, 3 deletions
diff --git a/gtk2_ardour/splash.cc b/gtk2_ardour/splash.cc
index 941350646d..0922ec75ba 100644
--- a/gtk2_ardour/splash.cc
+++ b/gtk2_ardour/splash.cc
@@ -83,6 +83,7 @@ Splash::Splash ()
the_splash = this;
expose_done = false;
+ expose_is_the_one = false;
ARDOUR::BootMessage.connect (msg_connection, invalidator (*this), boost::bind (&Splash::boot_message, this, _1), gui_context());
}
@@ -151,8 +152,10 @@ Splash::expose (GdkEventExpose* ev)
/* this must execute AFTER the GDK idle update mechanism
*/
- Glib::signal_idle().connect (sigc::mem_fun (this, &Splash::idle_after_expose),
- GDK_PRIORITY_REDRAW+2);
+ if (expose_is_the_one) {
+ Glib::signal_idle().connect (sigc::mem_fun (this, &Splash::idle_after_expose),
+ GDK_PRIORITY_REDRAW+2);
+ }
return true;
}
@@ -177,7 +180,8 @@ Splash::display ()
if (!was_mapped) {
expose_done = false;
- }
+ expose_is_the_one = false;
+ }
pop_front ();
present ();
@@ -186,6 +190,7 @@ Splash::display ()
while (!expose_done) {
gtk_main_iteration ();
}
+ gdk_display_flush (gdk_display_get_default());
}
}
@@ -211,5 +216,13 @@ Splash::message (const string& msg)
while (!expose_done) {
gtk_main_iteration ();
}
+ gdk_display_flush (gdk_display_get_default());
}
}
+
+bool
+Splash::on_map_event (GdkEventAny* ev)
+{
+ expose_is_the_one = true;
+ return Window::on_map_event (ev);
+}