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;
 }