MCPcopy Create free account
hub / github.com/OGRECave/ogre-next / startup

Method startup

OgreMain/src/Threading/OgreDefaultWorkQueueStandard.cpp:50–96  ·  view source on GitHub ↗

---------------------------------------------------------------------

Source from the content-addressed store, hash-verified

48 DefaultWorkQueue::~DefaultWorkQueue() { shutdown(); }
49 //---------------------------------------------------------------------
50 void DefaultWorkQueue::startup( bool forceRestart )
51 {
52 if( mIsRunning )
53 {
54 if( forceRestart )
55 shutdown();
56 else
57 return;
58 }
59
60 mShuttingDown = false;
61
62 mWorkerFunc = OGRE_NEW_T( WorkerFunc( this ), MEMCATEGORY_GENERAL );
63
64 LogManager::getSingleton().stream()
65 << "DefaultWorkQueue('" << mName << "') initialising on thread " <<
66#if OGRE_THREAD_SUPPORT
67 OGRE_THREAD_CURRENT_ID
68#else
69 "main"
70#endif
71 << ".";
72
73#if OGRE_THREAD_SUPPORT
74 if( mWorkerRenderSystemAccess )
75 Root::getSingleton().getRenderSystem()->preExtraThreadsStarted();
76
77 mNumThreadsRegisteredWithRS = 0;
78 for( uint8 i = 0; i < mWorkerThreadCount; ++i )
79 {
80 OGRE_THREAD_CREATE( t, *mWorkerFunc );
81 mWorkers.push_back( t );
82 }
83
84 if( mWorkerRenderSystemAccess )
85 {
86 OGRE_LOCK_MUTEX_NAMED( mInitMutex, initLock );
87 // have to wait until all threads are registered with the render system
88 while( mNumThreadsRegisteredWithRS < mWorkerThreadCount )
89 OGRE_THREAD_WAIT( mInitSync, mInitMutex, initLock );
90
91 Root::getSingleton().getRenderSystem()->postExtraThreadsStarted();
92 }
93#endif
94
95 mIsRunning = true;
96 }
97 //---------------------------------------------------------------------
98 void DefaultWorkQueue::notifyThreadRegistered()
99 {

Callers

nothing calls this directly

Calls 6

WorkerFuncFunction · 0.85
streamMethod · 0.45
getRenderSystemMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected