10 void Threads::add_signal_handlers(){
11 Game::log("Adding Signal Handlers");
12 struct sigaction sa_sigterm;
13 sa_sigterm.sa_handler = &signal_handler;
14 sigaction(SIGTERM, &sa_sigterm, NULL);
15 struct sigaction sa_sigint;
16 sa_sigint.sa_handler = &signal_handler;
17 sigaction(SIGINT, &sa_sigint, NULL);
19 void Threads::signal_handler(int signal_number){
20 Game::log((string)"Got "+sys_siglist[signal_number]+" Signal, Exiting.");
24 void Threads::start(void *(*callback)(void *)){
26 pthread_create(&thread_id, NULL, callback, NULL);
28 void *Threads::worldBackupThread(void *unused){
29 Game::log("Starting World Backup");
31 sleep(BACKUP_INTERVAL);
36 void *Threads::graphicRedrawThread(void *unused){
37 Game::log("Starting Graphic Redraw");
45 void *Threads::modRuntimeThread(void *unused){
46 Game::log("Starting Mod Runtime");
53 void *Threads::entityPhysicsThread(void *unused){
54 Game::log("Starting Entity Physics");
56 usleep(PHYSIC_TIME_TICK);
57 Entity::t += (double)PHYSIC_TIME_TICK / 1000000;
58 Entity::physics_all();
59 Graphics::ajustScroll();