Changeset 63


Ignore:
Timestamp:
09/07/08 22:03:45 (10 years ago)
Author:
art
Message:
  • small changes in the Kernel and Engine, now Engine do stop the kernel when releasing and let kernel run one tick, so that all tasks can stop before removed
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Make/Makedefs

    r61 r63  
    5050#----------------------------------------------- 
    5151CC = g++ 
    52 CFLAGS = -m32 -pthread -g -O2 -Wall -Werror $(INCPATH) 
     52CFLAGS = -m32 -pthread -g -O2 $(INCPATH) 
    5353LIBS =  
    5454LDFLAGS = -shared $(LIBPATH) $(LIBS) 
  • trunk/include/nrEngine/Engine.h

    r45 r63  
    171171                         * Check whenever the engine'S singleton was created before 
    172172                         **/ 
    173                         static bool valid(void* p = sSingleton.get(), char* name = "Engine", bool showWarn = true); 
     173                        static bool valid(void* p = sSingleton.get(), char* name = (char*)"Engine", bool showWarn = true); 
    174174                          
    175175                        /** 
  • trunk/src/nrEngine/Engine.cpp

    r46 r63  
    7474         Log* Engine::sLog() 
    7575        { 
    76                 valid(_logger, "Log"); 
     76                valid(_logger, (char*)"Log"); 
    7777                return _logger; 
    7878        } 
     
    8181         Kernel* Engine::sKernel() 
    8282        { 
    83                 valid(_kernel, "Kernel"); 
     83                valid(_kernel, (char*)"Kernel"); 
    8484                return _kernel; 
    8585        } 
     
    8888         Clock* Engine::sClock() 
    8989        { 
    90                 valid(_clock, "Clock"); 
     90                valid(_clock, (char*)"Clock"); 
    9191                return _clock; 
    9292        } 
     
    9595         Profiler* Engine::sProfiler() 
    9696        { 
    97                 valid(_profiler, "Profiler"); 
     97                valid(_profiler, (char*)"Profiler"); 
    9898                return _profiler; 
    9999        } 
     
    102102         ResourceManager* Engine::sResourceManager() 
    103103        { 
    104                 valid(_resmgr, "ResourceManager"); 
     104                valid(_resmgr, (char*)"ResourceManager"); 
    105105                return _resmgr; 
    106106        } 
     
    109109         EventManager* Engine::sEventManager() 
    110110        { 
    111                 valid(_event, "EventManager"); 
     111                valid(_event, (char*)"EventManager"); 
    112112                return _event; 
    113113        } 
     
    116116         ScriptEngine* Engine::sScriptEngine() 
    117117        { 
    118                 valid(_script, "ScriptEngine"); 
     118                valid(_script, (char*)"ScriptEngine"); 
    119119                return _script; 
    120120        } 
     
    123123        PropertyManager* Engine::sPropertyManager() 
    124124        { 
    125                 valid(_propmgr, "PropertyManager"); 
     125                valid(_propmgr, (char*)"PropertyManager"); 
    126126                return _propmgr; 
    127127        } 
     
    136136                        NR_EXCEPT(OUT_OF_MEMORY, "Log system could not be created. Probably memory is full", "Engine::Engine()"); 
    137137                } 
    138                  
     138 
    139139                // create property manager 
    140140                _propmgr = (new PropertyManager()); 
     
    169169        Engine::~Engine() 
    170170        { 
     171        stopEngine(); 
     172 
    171173                // remove default scripting methods 
    172174                DefaultScriptingFunctions::delMethods(); 
     
    186188                // delete the event system 
    187189                delete _event; 
    188                  
     190 
    189191                // remove property manager 
    190192                delete _propmgr; 
    191                  
     193 
    192194                // remove profiler 
    193195                delete _profiler; 
     
    208210        { 
    209211                // give log information 
    210                 _logger->log(Log::LOG_ENGINE, "nrEngine stopped"); 
     212                _logger->log(Log::LOG_ENGINE, (char*)"nrEngine stopped"); 
    211213 
    212214                // stop kernel tasks 
    213215                _kernel->StopExecution(); 
    214  
     216        _kernel->OneTick(); 
    215217        } 
    216218        //------------------------------------------------------------------------ 
     
    218220        { 
    219221                // give some info about the underlying engine 
    220                 NR_Log(Log::LOG_ENGINE | Log::LOG_CONSOLE | Log::LOG_KERNEL, "nrEngine v%s - %s", convertVersionToString(nrEngineVersion).c_str(), NR_VERSION_NAME); 
    221                  
     222                NR_Log(Log::LOG_ENGINE | Log::LOG_CONSOLE | Log::LOG_KERNEL, (char*)"nrEngine v%s - %s", convertVersionToString(nrEngineVersion).c_str(), NR_VERSION_NAME); 
     223 
    222224                // initialize the clock 
    223225                SharedPtr<TimeSource> timeSource(new TimeSource()); 
     
    226228                _profiler = (new Profiler(timeSource)); 
    227229                if (_profiler == NULL) 
    228                         NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, "Profiler singleton could not be created. Probably memory is full"); 
     230                        NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, (char*)"Profiler singleton could not be created. Probably memory is full"); 
    229231 
    230232                // now add the clock into kernel 
     
    236238                _event = (new EventManager()); 
    237239                if (_event == NULL) 
    238                         NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, "Event manager singleton could not be created. Probably memory is full"); 
     240                        NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, (char*)"Event manager singleton could not be created. Probably memory is full"); 
    239241 
    240242                _event->createChannel(NR_DEFAULT_EVENT_CHANNEL); 
     
    244246                // initialise default scripting methods 
    245247                DefaultScriptingFunctions::addMethods(); 
    246                  
     248 
    247249                // initialize resource manager singleton 
    248250                _resmgr = (new ResourceManager()); 
    249251                if (_resmgr == NULL) 
    250                         NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, "Resource manager singleton could not be created. Probably memory is full"); 
     252                        NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, (char*)"Resource manager singleton could not be created. Probably memory is full"); 
    251253 
    252254                // Add the file reading functionality 
    253255                ResourceLoader fileLoader (new FileStreamLoader()); 
    254                 _resmgr->registerLoader("FileStreamLoader", fileLoader); 
     256                _resmgr->registerLoader((char*)"FileStreamLoader", fileLoader); 
    255257 
    256258                // create an instance of plugin loader and add it to the resource manager 
    257259                ResourceLoader loader ( new PluginLoader() ); 
    258                 _resmgr->registerLoader("PluginLoader", loader); 
     260                _resmgr->registerLoader((char*)"PluginLoader", loader); 
    259261 
    260262                // create simple scripting language instancies 
    261263                ResourceLoader scriptLoader( new ScriptLoader() ); 
    262                 _resmgr->registerLoader("ScriptLoader", scriptLoader); 
     264                _resmgr->registerLoader((char*)"ScriptLoader", scriptLoader); 
    263265 
    264266                return true; 
     
    270272 
    271273                // log info 
    272                 _logger->log(Log::LOG_ENGINE, "nrEngine started"); 
     274                _logger->log(Log::LOG_ENGINE, (char*)"nrEngine started"); 
    273275 
    274276                // start the kernel 
     
    291293                if (_resmgr == NULL) 
    292294                { 
    293                         NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, "Engine was not initialized properly"); 
     295                        NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, (char*)"Engine was not initialized properly"); 
    294296                        return false; 
    295297                } 
    296298 
    297299                // try to load the resource and check for the error code 
    298                 IResourcePtr plg = _resmgr->loadResource(name, "Plugins", path + file, "Plugin"); 
     300                IResourcePtr plg = _resmgr->loadResource(name, (char*)"Plugins", path + file, (char*)"Plugin"); 
    299301 
    300302                return true; 
    301303        } 
    302304 
    303          
     305 
    304306        //------------------------------------------------------------------------ 
    305307        //Plugin getPlugin(const std::string& name){ 
    306308 
    307309        //} 
    308          
     310 
    309311}; // end namespace 
    310312 
  • trunk/src/nrEngine/Kernel.cpp

    r46 r63  
    3535 
    3636        //------------------------------------------------------------------------- 
    37         Kernel::~Kernel(){ 
     37        Kernel::~Kernel() 
     38    { 
    3839                StopExecution(); 
    3940 
     
    134135                } 
    135136 
    136                 // Now we yield the running thread, so that our system could still  
     137                // Now we yield the running thread, so that our system could still 
    137138                // response 
    138139                IThread::yield(); 
Note: See TracChangeset for help on using the changeset viewer.