ViewerInstancePtr ViewerNode::getViewerProcessNode(int index) const { if (index >= 2 || index < 0) { return ViewerInstancePtr(); } NodePtr node = _imp->getViewerProcessNode(index); if (!node) { return ViewerInstancePtr(); } return toViewerInstance(node->getEffectInstance()); }
ViewerInstancePtr GuiAppInstance::getLastViewerUsingTimeline() const { QMutexLocker k(&_imp->lastTimelineViewerMutex); if (!_imp->lastTimelineViewer) { return ViewerInstancePtr(); } return _imp->lastTimelineViewer->isEffectViewerInstance(); }
ViewerTab::~ViewerTab() { Gui* gui = getGui(); if (gui) { NodeGraph* graph = 0; ViewerNodePtr internalNode = getInternalNode(); ViewerInstancePtr viewerNode = internalNode ? internalNode->getInternalViewerNode() : ViewerInstancePtr(); if (viewerNode) { NodeCollectionPtr collection = viewerNode->getNode()->getGroup(); if (collection) { NodeGroupPtr isGrp = toNodeGroup(collection); if (isGrp) { NodeGraphI* graph_i = isGrp->getNodeGraph(); if (graph_i) { graph = dynamic_cast<NodeGraph*>(graph_i); assert(graph); } } else { graph = gui->getNodeGraph(); } } internalNode->invalidateUiContext(); } else { graph = gui->getNodeGraph(); } assert(graph); GuiAppInstancePtr app = gui->getApp(); if ( app && !app->isClosing() && graph && (graph->getLastSelectedViewer() == this) ) { graph->setLastSelectedViewer(0); } } _imp->nodesContext.clear(); }