X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fcore%2Fapplication.cpp;h=17611c1429ac2ef716c1687ba892b3b6356e6f74;hp=f64f350e83e362b1d0cde831a7f0f542e52388b2;hb=fcd7272c28b6da5a68d41e5aac7be1dfd2eeab78;hpb=35f587ac1df01d9e0018fb8cb77e603b07ebf1b4 diff --git a/source/core/application.cpp b/source/core/application.cpp index f64f350..17611c1 100644 --- a/source/core/application.cpp +++ b/source/core/application.cpp @@ -1,7 +1,7 @@ /* $Id$ This file is part of libmspcore -Copyright © 2006 Mikko Rasa, Mikkosoft Productions +Copyright © 2006-2008, 2011 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ @@ -20,8 +20,7 @@ using namespace std; namespace Msp { Application::Application(): - exit_code(0), - loop_mode_(TICK_SLEEP) + exit_code(0) { } /** @@ -107,40 +106,14 @@ void Application::usage(const char *reason, const char *, bool) } /** -Default main loop. Behavior depends on loop_mode_. A custom main loop should -monitor the done member variable and return exit_code. +Default main loop. Calls tick() repeatedly until exit() is called. A custom +main loop should monitor the done member variable and return exit_code. */ int Application::main() { - if(loop_mode_==NONE) - return 0; - - done=false; + done = false; while(!done) - { - if(loop_mode_==SLEEP) - { - sleep_sem_.wait(); - if(!done) - tick(); - } - else if(loop_mode_==TICK_SLEEP) - { - tick(); - Time::sleep(Time::msec); - } - else if(loop_mode_==TICK_YIELD) - { - tick(); -#ifdef WIN32 - Sleep(0); -#else - sched_yield(); -#endif - } - else if(loop_mode_==TICK_BUSY) - tick(); - } + tick(); return exit_code; } @@ -153,36 +126,13 @@ void Application::catch_signal(int s) signal(s, &sighandler_); } -/** -Changes the main loop mode. -*/ -void Application::set_loop_mode(LoopMode l) -{ - LoopMode old_mode=loop_mode_; - loop_mode_=l; - if(old_mode==SLEEP) - sleep_sem_.signal(); -} - -/** -Causes the tick() function to be executed once if loop mode is SLEEP. Has no -effect with other loop modes. -*/ -void Application::induce_tick() -{ - if(loop_mode_==SLEEP) - sleep_sem_.signal(); -} - /** Causes the application to exit gracefully with the given exit code. */ void Application::exit(int c) { - done=true; - exit_code=c; - if(loop_mode_==SLEEP) - sleep_sem_.signal(); + done = true; + exit_code = c; } /**