timebased: set connected node before processing

Fixes #1775
This commit is contained in:
itsmattkc
2021-10-21 13:57:49 -07:00
parent 348d7eb946
commit be24e7e580
3 changed files with 16 additions and 10 deletions
+10 -9
View File
@@ -74,17 +74,21 @@ void TimeBasedWidget::ConnectViewerNode(ViewerOutput *node)
return;
}
if (viewer_node_) {
// Set viewer node
ViewerOutput* old = viewer_node_;
viewer_node_ = node;
if (old) {
// Call potential derivative functions for disconnecting the viewer node
DisconnectNodeEvent(viewer_node_);
DisconnectNodeEvent(old);
// Disconnect length changed signal
disconnect(viewer_node_, &ViewerOutput::LengthChanged, this, &TimeBasedWidget::UpdateMaximumScroll);
disconnect(viewer_node_, &ViewerOutput::RemovedFromGraph, this, &TimeBasedWidget::ConnectedNodeRemovedFromGraph);
disconnect(old, &ViewerOutput::LengthChanged, this, &TimeBasedWidget::UpdateMaximumScroll);
disconnect(old, &ViewerOutput::RemovedFromGraph, this, &TimeBasedWidget::ConnectedNodeRemovedFromGraph);
// Disconnect rate change signals if they were connected
disconnect(viewer_node_, &ViewerOutput::FrameRateChanged, this, &TimeBasedWidget::AutoUpdateTimebase);
disconnect(viewer_node_, &ViewerOutput::SampleRateChanged, this, &TimeBasedWidget::AutoUpdateTimebase);
disconnect(old, &ViewerOutput::FrameRateChanged, this, &TimeBasedWidget::AutoUpdateTimebase);
disconnect(old, &ViewerOutput::SampleRateChanged, this, &TimeBasedWidget::AutoUpdateTimebase);
// Reset timebase to null
SetTimebase(rational());
@@ -94,9 +98,6 @@ void TimeBasedWidget::ConnectViewerNode(ViewerOutput *node)
scrollbar_->ConnectTimelinePoints(nullptr);
}
// Set viewer node
ViewerOutput* old = viewer_node_;
viewer_node_ = node;
emit ConnectedNodeChanged(old, node);
// Call derivatives