Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-02-02 13:23:00 +0000
committerStijn Buys <ingar@osirion.org>2008-02-02 13:23:00 +0000
commitcdc5a69a108654ff378839e8cf93669de31ff9c5 (patch)
tree10bdc47d0d51485f49387bee3aeae7037c47df6e /src/core/applicationinterface.cc
parent1765b93250ac3b89947c3da7f0c7266a910367c9 (diff)
removed libcommon
modularized client and server
Diffstat (limited to 'src/core/applicationinterface.cc')
-rw-r--r--src/core/applicationinterface.cc28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/core/applicationinterface.cc b/src/core/applicationinterface.cc
index ba22d8c..209a4f5 100644
--- a/src/core/applicationinterface.cc
+++ b/src/core/applicationinterface.cc
@@ -7,17 +7,14 @@
#include "core/core.h"
#include "filesystem/filesystem.h"
#include "sys/sys.h"
-#include "common/common.h"
#include <iostream>
-
-#include <stdlib.h>
-
#include <errno.h>
#include <signal.h>
namespace core {
+// --------------- signal_handler -----------------------------------
extern "C" void signal_handler(int signum)
{
switch(signum){
@@ -25,24 +22,30 @@ extern "C" void signal_handler(int signum)
case SIGINT:
case SIGQUIT:
case SIGTERM:
- con_warn << "received signal " << signum << ", shutting down..." << std::endl;
- if (ApplicationInterface::instance());
+ if (ApplicationInterface::instance()) {
+ con_warn << "received signal " << signum << ", shutting down..." << std::endl;
ApplicationInterface::instance()->shutdown();
- exit(1);
+ ApplicationInterface::instance()->quit(0);
+ } else {
+ std::cerr << "received signal " << signum << ", no application found, terminated..." << std::endl;
+ sys::quit(1);
+ }
break;
default:
- con_warn << "received signal " << signum << ", terminated..." << std::endl;
- exit(1);
+ std::cerr << "received signal " << signum << ", terminated..." << std::endl;
+ sys::quit(1);
break;
}
}
+// --------------- ApplicationInterface -----------------------------
+
ApplicationInterface *ApplicationInterface::applicationinterface_instance = 0;
ApplicationInterface::ApplicationInterface() {
if (applicationinterface_instance) {
std::cerr << "multiple singleton instances: core::ApplicationInterface" << std::endl;
- exit(2);
+ sys::quit(2);
}
applicationinterface_instance = this;
@@ -87,6 +90,11 @@ void ApplicationInterface::shutdown()
filesystem::shutdown();
}
+void ApplicationInterface::quit(int status)
+{
+ sys::quit(status);
+}
+
void ApplicationInterface::frame(float seconds)
{
if (game())