]> git.sesse.net Git - nageru/commitdiff
Fix a crash on exit.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 8 Oct 2015 17:48:21 +0000 (19:48 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 8 Oct 2015 17:48:21 +0000 (19:48 +0200)
main.cpp
mixer.cpp
mixer.h

index a3c3334e798ec2741b2606a4db4745b505663778..2b5dc066266261881b8c662fe5914560139614a1 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -36,5 +36,6 @@ int main(int argc, char *argv[])
 
        int rc = app.exec();
        global_mixer->quit();
+       delete global_mixer;
        return rc;
 }
index 4d69e5c732266a2dae67e9a794c9dca49b1f9ada..8c7a25bceff483eeb4eff9c846440510fda49950 100644 (file)
--- a/mixer.cpp
+++ b/mixer.cpp
@@ -413,6 +413,16 @@ void Mixer::transition_clicked(int transition_num)
        theme->transition_clicked(transition_num, frame / 60.0);
 }
 
+Mixer::OutputChannel::~OutputChannel()
+{
+       if (has_current_frame) {
+               parent->release_display_frame(&current_frame);
+       }
+       if (has_ready_frame) {
+               parent->release_display_frame(&ready_frame);
+       }
+}
+
 void Mixer::OutputChannel::output_frame(DisplayFrame frame)
 {
        // Store this frame for display. Remove the ready frame if any
diff --git a/mixer.h b/mixer.h
index 97bae3057e87e60151f4ba87f96d57ab4d66e107..de95eef1765cbb1f07feae2a4a5ce2693ee6e3e6 100644 (file)
--- a/mixer.h
+++ b/mixer.h
@@ -116,6 +116,7 @@ private:
 
        class OutputChannel {
        public:
+               ~OutputChannel();
                void output_frame(DisplayFrame frame);
                bool get_display_frame(DisplayFrame *frame);
                void set_frame_ready_callback(new_frame_ready_callback_t callback);