MCPcopy Create free account
hub / github.com/MrKepzie/Natron / aboutToStartRender

Method aboutToStartRender

Engine/OutputSchedulerThread.cpp:2546–2621  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2544}
2545
2546void
2547DefaultScheduler::aboutToStartRender()
2548{
2549 boost::shared_ptr<OutputSchedulerThreadStartArgs> args = getCurrentRunArgs();
2550 boost::shared_ptr<OutputEffectInstance> effect = _effect.lock();
2551
2552 {
2553 QMutexLocker k(&_currentTimeMutex);
2554 if (args->pushTimelineDirection == eRenderDirectionForward) {
2555 _currentTime = args->firstFrame;
2556 } else {
2557 _currentTime = args->lastFrame;
2558 }
2559 }
2560 bool isBackGround = appPTR->isBackground();
2561
2562 if (!isBackGround) {
2563 effect->setKnobsFrozen(true);
2564 } else {
2565 QString longText = QString::fromUtf8( effect->getScriptName_mt_safe().c_str() ) + tr(" ==> Rendering started");
2566 appPTR->writeToOutputPipe(longText, QString::fromUtf8(kRenderingStartedShort), true);
2567 }
2568
2569 // Activate the internal writer node for a write node
2570 WriteNode* isWriter = dynamic_cast<WriteNode*>( effect.get() );
2571 if (isWriter) {
2572 isWriter->onSequenceRenderStarted();
2573 }
2574
2575 std::string cb = effect->getNode()->getBeforeRenderCallback();
2576 if ( !cb.empty() ) {
2577 std::vector<std::string> args;
2578 std::string error;
2579 try {
2580 NATRON_PYTHON_NAMESPACE::getFunctionArguments(cb, &error, &args);
2581 } catch (const std::exception& e) {
2582 effect->getApp()->appendToScriptEditor( std::string("Failed to run beforeRender callback: ")
2583 + e.what() );
2584
2585 return;
2586 }
2587
2588 if ( !error.empty() ) {
2589 effect->getApp()->appendToScriptEditor("Failed to run beforeRender callback: " + error);
2590
2591 return;
2592 }
2593
2594 std::string signatureError;
2595 signatureError.append("The beforeRender callback supports the following signature(s):\n");
2596 signatureError.append("- callback(thisNode, app)");
2597 if (args.size() != 2) {
2598 effect->getApp()->appendToScriptEditor("Failed to run beforeRender callback: " + signatureError);
2599
2600 return;
2601 }
2602
2603 if ( (args[0] != "thisNode") || (args[1] != "app") ) {

Callers

nothing calls this directly

Calls 15

writeToOutputPipeMethod · 0.80
emptyMethod · 0.80
appendMethod · 0.80
getAppIDStringMethod · 0.80
lockMethod · 0.45
isBackgroundMethod · 0.45
setKnobsFrozenMethod · 0.45
getScriptName_mt_safeMethod · 0.45
getMethod · 0.45
getNodeMethod · 0.45

Tested by

no test coverage detected