From 3591f0c7b363860e9866b0f9918c676282e5b039 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 5 Oct 2019 07:44:11 +1000 Subject: [PATCH] fixed crash when tracks are added --- app/node/output/timeline/tracklist.cpp | 12 ++++++++---- app/node/output/timeline/tracklist.h | 3 +++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/node/output/timeline/tracklist.cpp b/app/node/output/timeline/tracklist.cpp index 1cfb4c208..904c82eaa 100644 --- a/app/node/output/timeline/tracklist.cpp +++ b/app/node/output/timeline/tracklist.cpp @@ -21,7 +21,6 @@ #include "tracklist.h" #include "node/blend/alphaover/alphaover.h" -#include "node/graph.h" #include "timeline.h" TrackList::TrackList(TimelineOutput* parent, NodeInput *track_input) : @@ -134,7 +133,7 @@ void TrackList::SetTimebase(const rational &timebase) void TrackList::AddTrack() { TrackOutput* track = new TrackOutput(); - static_cast(parent())->AddNode(track); + GetParentGraph()->AddNode(track); if (track_cache_.isEmpty()) { // Connect this track directly to this output @@ -147,7 +146,7 @@ void TrackList::AddTrack() // FIXME: Test code only AlphaOverBlend* blend = new AlphaOverBlend(); - static_cast(parent())->AddNode(blend); + GetParentGraph()->AddNode(blend); NodeParam::ConnectEdge(track->texture_output(), blend->blend_input()); NodeParam::ConnectEdge(current_last_track->texture_output(), blend->base_input()); @@ -164,7 +163,7 @@ void TrackList::RemoveTrack() TrackOutput* track = track_cache_.last(); - static_cast(parent())->TakeNode(track); + GetParentGraph()->TakeNode(track); delete track; } @@ -217,3 +216,8 @@ void TrackList::TrackEdgeRemoved(NodeEdgePtr edge) DetachTrack(added_track); } } + +NodeGraph *TrackList::GetParentGraph() +{ + return static_cast(parent()->parent()); +} diff --git a/app/node/output/timeline/tracklist.h b/app/node/output/timeline/tracklist.h index 8aeeedf97..856b8153f 100644 --- a/app/node/output/timeline/tracklist.h +++ b/app/node/output/timeline/tracklist.h @@ -23,6 +23,7 @@ #include +#include "node/graph.h" #include "node/output/track/track.h" class TimelineOutput; @@ -100,6 +101,8 @@ signals: void TimebaseChanged(const rational &timebase); private: + NodeGraph* GetParentGraph(); + /** * @brief A cache of connected Tracks */