diff options
author | Robin Gareus <robin@gareus.org> | 2020-05-22 01:39:43 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-05-22 01:39:43 +0200 |
commit | a4a96f7556d4fca1b1b9a9005db6e11e349ded92 (patch) | |
tree | 6821c13e0e31480ed24542847bbd808676f36c69 /gtk2_ardour/editor_videotimeline.cc | |
parent | 44bca6cc8f18d8965cbce78d6ff320b164cbcf50 (diff) |
Prevent rare crash at exit in optimized builds
update_video_timeline() is called after destroying the
video_timeline instance at exit.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 __GI_abort () at abort.c:79
#2 __assert_fail_base at assert.c:92
#3 __GI___assert_fail at assert.c:101
#4 Editor::update_video_timeline(bool) (this=0x55a10a25a060, flush=false) at ../gtk2_ardour/editor_videotimeline.cc:57
#5 Editor::visual_changer(Editor::VisualChange const&) (this=0x55a10a25a060, vc=...) at ../gtk2_ardour/editor.cc:4746
#6 Editor::idle_visual_changer() (this=0x55a10a25a060) at ../gtk2_ardour/editor.cc:4687
#7 Editor::_idle_visual_changer(void*) (arg=0x55a10a25a060) at ../gtk2_ardour/editor.cc:4645
#8 g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#9 () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 g_main_loop_run () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#12 Gtkmm2ext::UI::run(Receiver&) (this=0x55a105ababe0, old_receiver=...) at ../libs/gtkmm2ext/gtk_ui.cc:293
#13 main(int, char**) (argc=1, argv=0x7fffcd806dc8) at ../gtk2_ardour/main.cc:437
Diffstat (limited to 'gtk2_ardour/editor_videotimeline.cc')
-rw-r--r-- | gtk2_ardour/editor_videotimeline.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gtk2_ardour/editor_videotimeline.cc b/gtk2_ardour/editor_videotimeline.cc index 45d0e39951..9028756b6f 100644 --- a/gtk2_ardour/editor_videotimeline.cc +++ b/gtk2_ardour/editor_videotimeline.cc @@ -55,6 +55,9 @@ Editor::update_video_timeline (bool flush) { // catch GUIIdle -> Editor::idle_visual_changer during quit/close assert (ARDOUR_UI::instance()->video_timeline); + if (!ARDOUR_UI::instance()->video_timeline) { + return; + } if (flush) { ARDOUR_UI::instance()->video_timeline->flush_local_cache(); |