diff --git a/src/audio_controller.cpp b/src/audio_controller.cpp index a6e5e76a2..38a764ae1 100644 --- a/src/audio_controller.cpp +++ b/src/audio_controller.cpp @@ -216,14 +216,12 @@ bool AudioController::IsAudioOpen() const return player && provider; } -void AudioController::SetTimingController(AudioTimingController *new_controller) +void AudioController::SetTimingController(std::unique_ptr new_controller) { - if (timing_controller.get() != new_controller) { - timing_controller.reset(new_controller); - if (timing_controller) - { - timing_controller->AddUpdatedPrimaryRangeListener(&AudioController::OnTimingControllerUpdatedPrimaryRange, this); - } + timing_controller = std::move(new_controller); + if (timing_controller) + { + timing_controller->AddUpdatedPrimaryRangeListener(&AudioController::OnTimingControllerUpdatedPrimaryRange, this); } AnnounceTimingControllerChanged(); diff --git a/src/audio_controller.h b/src/audio_controller.h index 546cb89f7..c368e859a 100644 --- a/src/audio_controller.h +++ b/src/audio_controller.h @@ -228,14 +228,11 @@ public: /// @brief Return the current timing controller /// @return The current timing controller or 0 - AudioTimingController * GetTimingController() const { return timing_controller.get(); } + AudioTimingController *GetTimingController() const { return timing_controller.get(); } /// @brief Change the current timing controller - /// @param new_mode The new timing controller or 0. This may be the same - /// object as the current timing controller, to signal that the timing - /// controller has changed the object being timed, e.g. changed to a new - /// dialogue line. - void SetTimingController(AudioTimingController *new_controller); + /// @param new_mode The new timing controller or nullptr + void SetTimingController(std::unique_ptr new_controller); /// @brief Save a portion of the decoded loaded audio to a wav file /// @param filename File to save to diff --git a/src/audio_timing.h b/src/audio_timing.h index 4a9e2bd64..887903f7d 100644 --- a/src/audio_timing.h +++ b/src/audio_timing.h @@ -179,12 +179,11 @@ public: DEFINE_SIGNAL_ADDERS(AnnounceUpdatedStyleRanges, AddUpdatedStyleRangesListener) }; - /// @brief Create a standard dialogue audio timing controller /// @param c Project context -AudioTimingController *CreateDialogueTimingController(agi::Context *c); +std::unique_ptr CreateDialogueTimingController(agi::Context *c); /// @brief Create a karaoke audio timing controller /// @param c Project context /// @param kara Karaoke model -AudioTimingController *CreateKaraokeTimingController(agi::Context *c, AssKaraoke *kara, agi::signal::Connection& file_changed); +std::unique_ptr CreateKaraokeTimingController(agi::Context *c, AssKaraoke *kara, agi::signal::Connection& file_changed); diff --git a/src/audio_timing_dialogue.cpp b/src/audio_timing_dialogue.cpp index 93b60d47c..9a11ca0df 100644 --- a/src/audio_timing_dialogue.cpp +++ b/src/audio_timing_dialogue.cpp @@ -43,6 +43,8 @@ #include "selection_controller.h" #include "utils.h" +#include + #include #include #include @@ -407,9 +409,9 @@ public: AudioTimingControllerDialogue(agi::Context *c); }; -AudioTimingController *CreateDialogueTimingController(agi::Context *c) +std::unique_ptr CreateDialogueTimingController(agi::Context *c) { - return new AudioTimingControllerDialogue(c); + return agi::util::make_unique(c); } AudioTimingControllerDialogue::AudioTimingControllerDialogue(agi::Context *c) diff --git a/src/audio_timing_karaoke.cpp b/src/audio_timing_karaoke.cpp index 08bc233fb..9c3614ed0 100644 --- a/src/audio_timing_karaoke.cpp +++ b/src/audio_timing_karaoke.cpp @@ -34,11 +34,12 @@ #include "selection_controller.h" #include "utils.h" -#include +#include #include #include #include +#include /// @class KaraokeMarker /// @brief AudioMarker implementation for AudioTimingControllerKaraoke @@ -149,9 +150,9 @@ public: AudioTimingControllerKaraoke(agi::Context *c, AssKaraoke *kara, agi::signal::Connection& file_changed); }; -AudioTimingController *CreateKaraokeTimingController(agi::Context *c, AssKaraoke *kara, agi::signal::Connection& file_changed) +std::unique_ptr CreateKaraokeTimingController(agi::Context *c, AssKaraoke *kara, agi::signal::Connection& file_changed) { - return new AudioTimingControllerKaraoke(c, kara, file_changed); + return agi::util::make_unique(c, kara, file_changed); } AudioTimingControllerKaraoke::AudioTimingControllerKaraoke(agi::Context *c, AssKaraoke *kara, agi::signal::Connection& file_changed)