From 4023b6d32f33ba027a99f26eb45f9b119165c43a Mon Sep 17 00:00:00 2001 From: brunoherbelin Date: Tue, 28 Jul 2020 12:36:40 +0200 Subject: [PATCH] bugfix: do not use global pointer to recorder --- UserInterfaceManager.cpp | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/UserInterfaceManager.cpp b/UserInterfaceManager.cpp index 1a39df3..d13c02a 100644 --- a/UserInterfaceManager.cpp +++ b/UserInterfaceManager.cpp @@ -57,7 +57,6 @@ using namespace std; #include "TextEditor.h" static TextEditor editor; -static Recorder *main_video_recorder = nullptr; // utility functions void ShowAboutGStreamer(bool* p_open); @@ -293,14 +292,11 @@ void UserInterface::handleKeyboard() } else if (ImGui::IsKeyPressed( GLFW_KEY_R )) { // toggle recording - if (main_video_recorder){ - main_video_recorder->stop(); - main_video_recorder = nullptr; - } - else { - main_video_recorder = new VideoRecorder; - Mixer::manager().session()->addRecorder(main_video_recorder); - } + Recorder *rec = Mixer::manager().session()->frontRecorder(); + if (rec) + rec->stop(); + else + Mixer::manager().session()->addRecorder(new VideoRecorder); } } @@ -632,9 +628,9 @@ void UserInterface::Render() ImGuiToolkit::ShowStats(&Settings::application.widget.stats, &Settings::application.widget.stats_corner); // TODO: better management of main_video_recorder - if (main_video_recorder && main_video_recorder->duration() > Settings::application.record.timeout ){ - main_video_recorder->stop(); - main_video_recorder = nullptr; + Recorder *rec = Mixer::manager().session()->frontRecorder(); + if (rec && rec->duration() > Settings::application.record.timeout ){ + rec->stop(); } // all IMGUI Rendering @@ -885,6 +881,9 @@ void UserInterface::RenderPreview() return; } + + Recorder *rec = Mixer::manager().session()->frontRecorder(); + // menu (no title bar) if (ImGui::BeginMenuBar()) { @@ -904,17 +903,15 @@ void UserInterface::RenderPreview() Mixer::manager().session()->addRecorder(new PNGRecorder); // Stop recording menu if main recorder already exists - if (main_video_recorder) { + if (rec) { if ( ImGui::MenuItem( ICON_FA_SQUARE " Stop Record", CTRL_MOD "R") ) { - main_video_recorder->stop(); - main_video_recorder = nullptr; + rec->stop(); } } // start recording else { if ( ImGui::MenuItem( ICON_FA_CIRCLE " Record", CTRL_MOD "R") ) { - main_video_recorder = new VideoRecorder; - Mixer::manager().session()->addRecorder(main_video_recorder); + Mixer::manager().session()->addRecorder(new VideoRecorder); } // select profile ImGui::SetNextItemWidth(300); @@ -965,7 +962,6 @@ void UserInterface::RenderPreview() // preview image ImGui::Image((void*)(intptr_t)output->texture(), imagesize); // recording indicator overlay - Recorder *rec = Mixer::manager().session()->frontRecorder(); if (rec) { float r = ImGui::GetTextLineHeightWithSpacing();