From c9e62e7aee97862ec0e0527b4a963bc9d244e41c Mon Sep 17 00:00:00 2001
From: fluxgen <fluxgen>
Date: Wed, 27 Nov 2002 21:50:32 +0000
Subject: virtual eventLoop, default displayname and exit eventLoop variable

---
 src/FbTk/App.cc | 18 +++++++++++++++++-
 src/FbTk/App.hh |  5 +++--
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/FbTk/App.cc b/src/FbTk/App.cc
index 89b5921..e32c806 100644
--- a/src/FbTk/App.cc
+++ b/src/FbTk/App.cc
@@ -20,6 +20,9 @@
 // DEALINGS IN THE SOFTWARE.
 
 #include "App.hh"
+
+#include "EventManager.hh"
+
 #include <cassert>
 #include <string>
 
@@ -33,7 +36,7 @@ App *App::instance() {
 	return s_app;
 }
 
-App::App(const char *displayname) {
+App::App(const char *displayname):m_done(false) {
 	if (s_app != 0)
 		throw std::string("Can't create more than one instance of FbTk::App");
 	s_app = this;
@@ -48,4 +51,17 @@ App::~App() {
 	s_app = 0;
 }
 
+void App::eventLoop() {
+	XEvent ev;
+	while (!m_done) {
+		XNextEvent(display(), &ev);
+		EventManager::instance()->handleEvent(ev);
+	}
+}
+
+
+void App::end() {
+	m_done = true; //end loop in App::eventLoop
+}
+
 }; // end namespace FbTk
diff --git a/src/FbTk/App.hh b/src/FbTk/App.hh
index ef5836c..bbaa249 100644
--- a/src/FbTk/App.hh
+++ b/src/FbTk/App.hh
@@ -32,16 +32,17 @@ class App {
 public:
 	/// @return singleton instance of App
 	static App *instance();
-	explicit App(const char *displayname);
+	explicit App(const char *displayname=0);
 	virtual ~App();
 	/// display connection
 	Display *display() const { return m_display; }
 	/// starts event loop
-	void eventLoop();
+	virtual void eventLoop();
 	/// ends event loop
 	void end();
 private:
 	static App *s_app;
+	bool m_done;
 	Display *m_display;
 };
 
-- 
cgit v0.11.2