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

Method onRenderStopped

Engine/OutputSchedulerThread.cpp:2615–2678  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2613} // DefaultScheduler::aboutToStartRender
2614
2615void
2616DefaultScheduler::onRenderStopped(bool aborted)
2617{
2618 OutputEffectInstancePtr effect = _effect.lock();
2619 bool isBackGround = appPTR->isBackground();
2620
2621 if (!isBackGround) {
2622 effect->setKnobsFrozen(false);
2623 }
2624
2625 {
2626 QString longText = QString::fromUtf8( effect->getScriptName_mt_safe().c_str() ) + tr(" ==> Rendering finished");
2627 appPTR->writeToOutputPipe(longText, QString::fromUtf8(kRenderingFinishedStringShort), true);
2628 }
2629
2630 effect->notifyRenderFinished();
2631
2632 std::string cb = effect->getNode()->getAfterRenderCallback();
2633 if ( !cb.empty() ) {
2634 std::vector<std::string> args;
2635 std::string error;
2636 try {
2637 NATRON_PYTHON_NAMESPACE::getFunctionArguments(cb, &error, &args);
2638 } catch (const std::exception& e) {
2639 effect->getApp()->appendToScriptEditor( std::string("Failed to get signature of afterRender callback: ")
2640 + e.what() );
2641
2642 return;
2643 }
2644
2645 if ( !error.empty() ) {
2646 effect->getApp()->appendToScriptEditor("Failed to get signature of afterRender callback: " + error);
2647
2648 return;
2649 }
2650
2651 std::string signatureError;
2652 signatureError.append("The after render callback supports the following signature(s):\n");
2653 signatureError.append("- callback(aborted, thisNode, app)");
2654 if ( (args.size() != 3) || (args[0] != "aborted") || (args[1] != "thisNode") || (args[2] != "app") ) {
2655 effect->getApp()->appendToScriptEditor("Wrong signature of afterRender callback: " + signatureError);
2656
2657 return;
2658 }
2659
2660
2661 std::stringstream ss;
2662 std::string appStr = effect->getApp()->getAppIDString();
2663 std::string outputNodeName = appStr + "." + effect->getNode()->getFullyQualifiedName();
2664 ss << cb << "(";
2665 if (aborted) {
2666 ss << "True, ";
2667 } else {
2668 ss << "False, ";
2669 }
2670 ss << outputNodeName << ", " << appStr << ")";
2671 std::string script = ss.str();
2672 try {

Callers

nothing calls this directly

Calls 15

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

Tested by

no test coverage detected