Changeset 2111 for code/branches/objecthierarchy/src/util/SignalHandler.h
- Timestamp:
- Nov 2, 2008, 12:38:26 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/objecthierarchy/src/util/SignalHandler.h
r2101 r2111 40 40 #include <string> 41 41 42 typedef int (*SignalCallback)( void * someData ); 42 namespace orxonox 43 { 44 typedef int (*SignalCallback)( void * someData ); 45 } 43 46 44 47 #if ORXONOX_PLATFORM != ORXONOX_PLATFORM_WIN32 45 48 #include <signal.h> 46 49 47 struct SignalRec 50 namespace orxonox 48 51 { 49 int signal; 50 sig_t handler; 51 }; 52 struct SignalRec 53 { 54 int signal; 55 sig_t handler; 56 }; 52 57 53 struct SignalCallbackRec54 {55 SignalCallback cb;56 void * someData;57 };58 struct SignalCallbackRec 59 { 60 SignalCallback cb; 61 void * someData; 62 }; 58 63 59 64 60 typedef std::list<SignalRec> SignalRecList;61 typedef std::list<SignalCallbackRec> SignalCallbackList;65 typedef std::list<SignalRec> SignalRecList; 66 typedef std::list<SignalCallbackRec> SignalCallbackList; 62 67 63 class SignalHandler64 {65 private:66 SignalHandler();67 public:68 inline static SignalHandler* getInstance() { if (!SignalHandler::singletonRef) SignalHandler::singletonRef = new SignalHandler(); return SignalHandler::singletonRef; }69 ~SignalHandler(){ SignalHandler::singletonRef = NULL; }68 class SignalHandler 69 { 70 private: 71 SignalHandler(); 72 public: 73 inline static SignalHandler* getInstance() { if (!SignalHandler::singletonRef) SignalHandler::singletonRef = new SignalHandler(); return SignalHandler::singletonRef; } 74 ~SignalHandler(){ SignalHandler::singletonRef = NULL; } 70 75 71 void registerCallback( SignalCallback cb, void * someData );76 void registerCallback( SignalCallback cb, void * someData ); 72 77 73 void doCatch( const std::string & appName, const std::string & filename );74 void dontCatch();78 void doCatch( const std::string & appName, const std::string & filename ); 79 void dontCatch(); 75 80 76 private:77 static void sigHandler( int sig );81 private: 82 static void sigHandler( int sig ); 78 83 79 void catchSignal( int sig );80 SignalRecList sigRecList;84 void catchSignal( int sig ); 85 SignalRecList sigRecList; 81 86 82 SignalCallbackList callbackList;87 SignalCallbackList callbackList; 83 88 84 static SignalHandler * singletonRef;89 static SignalHandler * singletonRef; 85 90 86 std::string appName;87 std::string filename;91 std::string appName; 92 std::string filename; 88 93 89 // used to turn on KeyAutoRepeat if OIS crashes 90 static bool bXAutoKeyRepeatOn_; 91 }; 94 // used to turn on KeyAutoRepeat if OIS crashes 95 static bool bXAutoKeyRepeatOn_; 96 }; 97 } 92 98 93 99 #else /* ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32 */ 94 100 95 class _UtilExport SignalHandler 101 namespace orxonox 96 102 { 97 public: 98 inline static SignalHandler* getInstance() { if (!SignalHandler::singletonRef) SignalHandler::singletonRef = new SignalHandler(); return SignalHandler::singletonRef; }; 99 void doCatch( const std::string & appName, const std::string & filename ) {}; 100 void dontCatch() {}; 101 void registerCallback( SignalCallback cb, void * someData ) {}; 103 class _UtilExport SignalHandler 104 { 105 public: 106 inline static SignalHandler* getInstance() { if (!SignalHandler::singletonRef) SignalHandler::singletonRef = new SignalHandler(); return SignalHandler::singletonRef; }; 107 void doCatch( const std::string & appName, const std::string & filename ) {}; 108 void dontCatch() {}; 109 void registerCallback( SignalCallback cb, void * someData ) {}; 102 110 103 private: 104 static SignalHandler * singletonRef; 105 }; 111 private: 112 static SignalHandler * singletonRef; 113 }; 114 } 106 115 107 116 #endif /* ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32 */
Note: See TracChangeset
for help on using the changeset viewer.