Fresco/Berlin/include/Berlin DesktopImpl.hh,1.12,1.13 ScreenManager.hh,1.26,1.27

Neil John Pilgrim <[email protected]>
Newsgroups gmane.comp.video.fresco.cvs
Message-ID <[email protected]>
Update of /cvs/fresco/Fresco/Berlin/include/Berlin
In directory purcel:/tmp/cvs-serv29796/Berlin/include/Berlin

Modified Files:
	DesktopImpl.hh ScreenManager.hh 
Log Message:
- Hitting ESC on desktop should now exit server cleanly (no inf-loops/crashes)
- Hitting Ctrl-C on controlling terminal of server should now exit it cleanly
- On exiting cleanly, server references are unpublished
=> Closes bug82 and bug126


Index: DesktopImpl.hh
===================================================================
RCS file: /cvs/fresco/Fresco/Berlin/include/Berlin/DesktopImpl.hh,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- DesktopImpl.hh	29 May 2002 06:49:38 -0000	1.12
+++ DesktopImpl.hh	23 Jan 2003 00:43:00 -0000	1.13
@@ -26,6 +26,7 @@
 #include <Fresco/Desktop.hh>
 #include <Berlin/ControllerImpl.hh>
 #include <Berlin/RefCountVar.hh>
+#include <Prague/Sys/Thread.hh>
 
 class WindowImpl;
 
@@ -33,7 +34,7 @@
                     public ControllerImpl
 {
 public:
-  DesktopImpl(CORBA::ORB_ptr, Layout::Stage_ptr);
+  DesktopImpl(CORBA::ORB_ptr, Layout::Stage_ptr, Prague::Semaphore &);
   virtual ~DesktopImpl();
   virtual void body(Fresco::Graphic_ptr);
   virtual Fresco::Graphic_ptr body();
@@ -52,6 +53,7 @@
 private:
   RefCount_var<Layout::Stage> _stage;
   CORBA::ORB_var              _orb;
+  Prague::Semaphore           & my_shutdown_semaphore;
 };
 
 #endif 

Index: ScreenManager.hh
===================================================================
RCS file: /cvs/fresco/Fresco/Berlin/include/Berlin/ScreenManager.hh,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- ScreenManager.hh	29 May 2002 06:49:38 -0000	1.26
+++ ScreenManager.hh	23 Jan 2003 00:43:00 -0000	1.27
@@ -51,9 +51,11 @@
   //. This method redraws the damaged regions of the screen.
   //. The DrawTraversal gets started here!
   void repair();
-  //. Main event loop.
-  void run();
+  //. Start the gui thread
+  void start();
 private:
+  static void *run_thread(void *);
+  void run();
   Fresco::Graphic_var         _screen;    //.< The graphic that is managed.
   EventManager               *_emanager;
   Fresco::DrawingKit_var      _drawing;   //.< The DrawingKit used to update this screen. 
@@ -61,6 +63,7 @@
   Impl_var<RegionImpl>        _tmpDamage; //.< Temporary copy of _theDamage
   Impl_var<DrawTraversalImpl> _traversal;
   Prague::Mutex               _mutex;
+  Prague::Thread              my_thread;
 };
 
 #endif
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.