MCPcopy Create free account
hub / github.com/NatronGitHub/Natron / run

Method run

Engine/OutputSchedulerThread.cpp:2048–2090  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2046}
2047
2048void
2049RenderThreadTask::run()
2050{
2051#ifdef DEBUG
2052 boost_adaptbx::floating_point::exception_trapping trap(boost_adaptbx::floating_point::exception_trapping::division_by_zero |
2053 boost_adaptbx::floating_point::exception_trapping::invalid |
2054 boost_adaptbx::floating_point::exception_trapping::overflow);
2055#endif
2056#ifndef NATRON_PLAYBACK_USES_THREAD_POOL
2057 notifyIsRunning(true);
2058
2059 for (;; ) {
2060 bool enableRenderStats;
2061 std::vector<ViewIdx> viewsToRender;
2062 int time = _imp->scheduler->pickFrameToRender(this, &enableRenderStats, &viewsToRender);
2063
2064 if ( mustQuit() ) {
2065 break;
2066 }
2067
2068#ifdef TRACE_SCHEDULER
2069 qDebug() << "Parallel Render Thread: Picking frame to render: " << time;
2070#endif
2071 renderFrame(time, viewsToRender, enableRenderStats);
2072
2073 appPTR->getAppTLS()->cleanupTLSForThread();
2074
2075 if ( mustQuit() ) {
2076 break;
2077 }
2078 }
2079
2080 {
2081 QMutexLocker l(&_imp->mustQuitMutex);
2082 _imp->hasQuit = true;
2083 }
2084 notifyIsRunning(false);
2085 _imp->scheduler->notifyThreadAboutToQuit(this);
2086#else // NATRON_PLAYBACK_USES_THREAD_POOL
2087 renderFrame(_imp->time, _imp->viewsToRender, _imp->useRenderStats);
2088 _imp->scheduler->notifyThreadAboutToQuit(this);
2089#endif
2090}
2091
2092#ifndef NATRON_PLAYBACK_USES_THREAD_POOL
2093bool

Callers 2

renderCurrentFrameMethod · 0.45
threadLoopOnceMethod · 0.45

Calls 4

pickFrameToRenderMethod · 0.80
cleanupTLSForThreadMethod · 0.80
getAppTLSMethod · 0.80

Tested by

no test coverage detected