summaryrefslogtreecommitdiff
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
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
-rw-r--r--gtk2_ardour/splash.cc19
-rw-r--r--gtk2_ardour/splash.h3
2 files changed, 18 insertions, 4 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);
+}
diff --git a/gtk2_ardour/splash.h b/gtk2_ardour/splash.h
index 536d7f30f1..1843d00c93 100644
--- a/gtk2_ardour/splash.h
+++ b/gtk2_ardour/splash.h
@@ -45,7 +45,7 @@ class Splash : public Gtk::Window
bool expose (GdkEventExpose*);
bool on_button_release_event (GdkEventButton*);
void on_realize ();
-
+ bool on_map_event (GdkEventAny*);
void message (const std::string& msg);
private:
@@ -59,6 +59,7 @@ class Splash : public Gtk::Window
PBD::ScopedConnection msg_connection;
bool expose_done;
+ bool expose_is_the_one;
bool idle_after_expose ();
};