From 0f234188e1f8881b7e997165b06e4187fc15c2d6 Mon Sep 17 00:00:00 2001 From: John Preston <johnprestonmail@gmail.com> Date: Thu, 19 Jan 2023 09:53:59 +0400 Subject: [PATCH] Fix crash in SystemMediaControls init. --- Telegram/SourceFiles/core/application.cpp | 9 ++++++--- Telegram/SourceFiles/core/application.h | 2 +- .../SourceFiles/media/player/media_player_instance.cpp | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/core/application.cpp b/Telegram/SourceFiles/core/application.cpp index f0d34537b..9d16ded2b 100644 --- a/Telegram/SourceFiles/core/application.cpp +++ b/Telegram/SourceFiles/core/application.cpp @@ -148,9 +148,6 @@ Application::Application(not_null<Launcher*> launcher) , _audio(std::make_unique<Media::Audio::Instance>()) , _fallbackProductionConfig( std::make_unique<MTP::Config>(MTP::Environment::Production)) -, _mediaControlsManager(MediaControlsManager::Supported() - ? std::make_unique<MediaControlsManager>() - : nullptr) , _downloadManager(std::make_unique<Data::DownloadManager>()) , _domain(std::make_unique<Main::Domain>(cDataFile())) , _exportManager(std::make_unique<Export::Manager>()) @@ -216,6 +213,8 @@ Application::~Application() { Window::Theme::Uninitialize(); + _mediaControlsManager = nullptr; + Media::Player::finish(_audio.get()); style::stopManager(); @@ -267,6 +266,10 @@ void Application::run() { startSystemDarkModeViewer(); Media::Player::start(_audio.get()); + if (MediaControlsManager::Supported()) { + _mediaControlsManager = std::make_unique<MediaControlsManager>(); + } + style::ShortAnimationPlaying( ) | rpl::start_with_next([=](bool playing) { if (playing) { diff --git a/Telegram/SourceFiles/core/application.h b/Telegram/SourceFiles/core/application.h index 9ee19e0d9..48a2512d4 100644 --- a/Telegram/SourceFiles/core/application.h +++ b/Telegram/SourceFiles/core/application.h @@ -387,7 +387,7 @@ private: std::unique_ptr<Window::Notifications::System> _notifications; using MediaControlsManager = Media::SystemMediaControlsManager; - const std::unique_ptr<MediaControlsManager> _mediaControlsManager; + std::unique_ptr<MediaControlsManager> _mediaControlsManager; const std::unique_ptr<Data::DownloadManager> _downloadManager; const std::unique_ptr<Main::Domain> _domain; const std::unique_ptr<Export::Manager> _exportManager; diff --git a/Telegram/SourceFiles/media/player/media_player_instance.cpp b/Telegram/SourceFiles/media/player/media_player_instance.cpp index eff518de7..377d611f2 100644 --- a/Telegram/SourceFiles/media/player/media_player_instance.cpp +++ b/Telegram/SourceFiles/media/player/media_player_instance.cpp @@ -765,6 +765,7 @@ auto Media::Player::Instance::seekingChanges(AudioMsgId::Type type) const not_null<Instance*> instance() { Expects(SingleInstance != nullptr); + return SingleInstance; }