Changeset 32 for nrEngine/src


Ignore:
Timestamp:
04/10/07 23:05:42 (13 years ago)
Author:
art
Message:
 
Location:
nrEngine/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • nrEngine/src/IThread.cpp

    r14 r32  
    3333        { 
    3434                // delete the thread object if it is not empty 
    35                 //if (mThread){ 
    36                         //delete mThread; 
     35                //if (mThread) 
     36                //{ 
     37                //      delete mThread; 
    3738                //} 
    3839        } 
     
    4243        { 
    4344                // Check if we have already a thread created 
    44                 /*if (mThread) 
     45                if (mThread) 
    4546                { 
    4647                        NR_Log(Log::LOG_KERNEL, Log::LL_WARNING, "IThread: the appropriate thread is already running!"); 
    4748                        return; 
    48                 }*/ 
     49                } 
    4950                NR_Log(Log::LOG_KERNEL, "IThread: Create thread and start it"); 
    5051 
     
    5960                 
    6061                // now create a thread and let it run 
    61                 mThreadState = THREAD_RUNNING; 
    6262                int res = pthread_create(&mThread, &mThreadAttr, IThread::run, (void *)this); 
    6363                if (res){ 
     
    6666                }*/ 
    6767    
     68                mThreadState = THREAD_RUNNING; 
     69                mThread.reset(new boost::thread(boost::bind(IThread::run, this))); 
     70                 
    6871        } 
    6972 
     
    8184                        return; 
    8285                }*/ 
     86                mThread->join(); 
    8387        } 
    8488 
     
    117121                // use pthread to yield the timeslice 
    118122                //pthread_yield(); 
     123                boost::thread::yield(); 
    119124        } 
    120125 
    121126        //-------------------------------------------------------------------- 
    122         void* IThread::run(void* _mythread) 
     127        void IThread::run(void* _mythread) 
    123128        { 
    124129                // try to cast the given parameter to IThread pointer 
     
    127132                { 
    128133                        NR_Log(Log::LOG_KERNEL, Log::LL_ERROR, "IThread: not valid parameter was specified for IThread::run(void*) method"); 
    129                         return NULL; 
     134                        return; 
    130135                } 
    131136                 
     
    166171 
    167172                // exit the thread 
    168                 pthread_exit(NULL); 
     173                //return NULL; 
    169174        } 
    170175 
  • nrEngine/src/Makefile

    r22 r32  
    5757INCPATH += -I../include 
    5858CFLAGS += -fPIC 
    59 LIBS += -ldl 
     59LIBS += -ldl -lboost_thread 
    6060 
    6161# define files for installation 
  • nrEngine/src/PluginLoader.cpp

    r15 r32  
    7171                return OK; 
    7272        } 
    73                  
     73 
     74        //---------------------------------------------------------------------------------- 
     75        std::string PluginLoader::getSuffix(const std::string& resType) 
     76        { 
     77#if NR_PLATFORM == NR_PLATFORM_WIN32 
     78                return std::string("dll"); 
     79#elif NR_PLATFORM == NR_PLATFORM_LINUX 
     80                return std::string("so"); 
     81#endif 
     82        } 
     83 
    7484        //---------------------------------------------------------------------------------- 
    7585        Result PluginLoader::loadResourceImpl(IResource* res, const std::string& fileName, PropertyList* param) 
  • nrEngine/src/Resource.cpp

    r25 r32  
    9898                return mResLoader->remove(getSharedPtrFromThis()); 
    9999        } 
     100         
     101        //---------------------------------------------------------------------------------- 
     102        void IResource::addResourceFilename(const std::string& filename) 
     103        { 
     104                // first check if such a filename already exists 
     105                std::list<std::string>::iterator it = std::find(mResFileNames.begin(), mResFileNames.end(), filename); 
     106                if (it == mResFileNames.end()) 
     107                        mResFileNames.push_back(filename); 
     108        } 
     109         
     110        //---------------------------------------------------------------------------------- 
     111        void IResource::addResourceFilename(const std::list<std::string>& flist) 
     112        { 
     113                std::list<std::string>::const_iterator it = flist.begin(); 
     114                for (; it != flist.end(); it++) 
     115                        addResourceFilename(*it); 
     116        } 
     117 
    100118}; 
    101119 
  • nrEngine/src/ResourceLoader.cpp

    r27 r32  
    5454                bool typeFound = false; 
    5555                std::string type; 
    56  
     56                std::string newFileName = fileName; 
     57                 
    5758                // we search for the type if no type is specified 
    58                 if (resourceType.length() == 0){ 
     59                if (resourceType.length() == 0) 
     60                { 
    5961                        NR_Log(Log::LOG_ENGINE, Log::LL_DEBUG, "ResourceLoader \"%s\" try to find according resource type by filename \"%s\"", mName.c_str(), fileName.c_str(), fileName.c_str()); 
    6062 
     
    7577                        } 
    7678 
     79                        // if no type foud, then check if suffix is defined 
     80                        if (!typeFound && resourceType.length() > 0) 
     81                        { 
     82                                type = getSuffix(resourceType); 
     83                                if (type.length() > 0) 
     84                                {        
     85                                        typeFound = true; 
     86                                        newFileName = fileName + std::string(".") + type; 
     87                                } 
     88                        } 
     89                         
    7790                        // if no type was specified so give up 
    78                         if (!typeFound){ 
    79                                 NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, "ResourceLoader %s neither resource type nor valid file ending was found, give up!", mName.c_str()); 
     91                        if (!typeFound) 
     92                        { 
     93                                NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, "ResourceLoader %s: neither resource type nor valid file ending was found, give up!", mName.c_str()); 
    8094                                return SharedPtr<IResource>(); 
    8195                        } 
     
    92106 
    93107                // setup some data on resource 
    94                 res->mResFileName = fileName; 
     108                res->addResourceFilename(newFileName); 
    95109                res->mResName = name; 
    96110                res->mResGroup = group; 
    97111 
    98112                // now call the implemented loading function 
    99                 if (loadResourceImpl(res.get(), fileName, param) != OK) 
    100                 { 
    101                         NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, "ResourceLoader %s can not load resource from file %s", mName.c_str(), fileName.c_str()); 
     113                if (loadResourceImpl(res.get(), newFileName, param) != OK) 
     114                { 
     115                        NR_Log(Log::LOG_ENGINE, Log::LL_ERROR, "ResourceLoader %s can not load resource from file %s", mName.c_str(), newFileName.c_str()); 
    102116                        remove(res); 
    103117                        return SharedPtr<IResource>(); 
  • nrEngine/src/ScriptLoader.cpp

    r30 r32  
    5555                return OK; 
    5656        } 
     57         
     58        //---------------------------------------------------------------------------------- 
     59        std::string ScriptLoader::getSuffix(const std::string& resType) 
     60        { 
     61                if (resType == "nrScript") 
     62                        return "nrscript"; 
     63                else if (resType == "Script") 
     64                        return "script"; 
     65                else if (resType == "Config") 
     66                        return "cfg"; 
     67                 
     68                return std::string(); 
     69        } 
    5770 
    5871        //---------------------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.