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

Method aboutToStartRender

Engine/OutputSchedulerThread.cpp:2544–2613  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 15

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

Tested by

no test coverage detected