Prefer testing the session instead of using a global variable
[ardour.git] / gtk2_ardour / splash.h
index a034ddad86271dcbf03d3780093fb3a4cbf80f64..109b68a8be2c7507ffb42d9d326eda740a0df0be 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2008 Paul Davis 
+    Copyright (C) 2008 Paul Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 #include <gtkmm/label.h>
 #include <gdkmm/pixbuf.h>
 
+#include "pbd/signals.h"
+
 class ARDOUR_UI;
 
 class Splash : public Gtk::Window
 {
-  public:
+public:
        Splash ();
-       ~Splash () {}
+       ~Splash ();
 
        static Splash* instance() { return the_splash; }
 
-       void pop_back ();
+       void display ();
+       void pop_back_for (Gtk::Window&);
+       void pop_front ();
 
        bool expose (GdkEventExpose*);
        bool on_button_release_event (GdkEventButton*);
        void on_realize ();
-       
+       bool on_map_event (GdkEventAny*);
        void message (const std::string& msg);
-       
-  private:
+       void hide ();
+
+private:
        static Splash* the_splash;
 
        Glib::RefPtr<Gdk::Pixbuf> pixbuf;
@@ -52,6 +57,12 @@ class Splash : public Gtk::Window
        Glib::RefPtr<Pango::Layout> layout;
 
        void boot_message (std::string);
-};     
+       PBD::ScopedConnection msg_connection;
+
+       sigc::connection idle_connection;
+       volatile bool expose_done;
+       bool expose_is_the_one;
+       bool idle_after_expose ();
+};
 
 #endif /* __ardour_gtk_splash_h__ */