-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add clips to tracks and tracks to track containers only after the constructor completes #7594
base: master
Are you sure you want to change the base?
Add clips to tracks and tracks to track containers only after the constructor completes #7594
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A few thoughts. Another doubt I have is that, does this fix that crash with deleting a track while playing?
I believe crashes like those happen because of synchronization issues involving mutexes (which I believe should be fixed, albeit not ideally). What I am addressing here with this PR is the problem where we are adding clips to tracks and tracks to track containers (like the song editor) way too early. If I created a |
Wait, nevermind, whatever |
64b8f86
to
3c0c167
Compare
PR too big. Started over. This PR is only concerned with delaying the addition of clips to tracks and tracks to track containers after the constructor is complete. |
TrackContainer::addTrack should be used instead.
Track::addClip should be used instead.
Also refactors/fixes calls to the already existing function TrackContainer::updateAfterTrackAdd
Currently, we add tracks and clips prematurely to there respective containers, i.e., they are added within the base class. This has seemed to have caused a number of problems involving calls to pure virtual functions (because the object wasn't fully created yet), to
dynamic_cast
failures and ultimately crashes. This PR fixes this by only adding a track or clip to their respective containers after the object has been fully constructed.