diff --git a/Telegram/SourceFiles/core/shortcuts.cpp b/Telegram/SourceFiles/core/shortcuts.cpp index 4ac61c7696..66fccd0a93 100644 --- a/Telegram/SourceFiles/core/shortcuts.cpp +++ b/Telegram/SourceFiles/core/shortcuts.cpp @@ -559,7 +559,6 @@ bool HandleEvent(not_null event) { void ToggleMediaShortcuts(bool toggled) { Data.toggleMedia(toggled); Platform::SetWatchingMediaKeys(toggled); - Media::Player::instance()->playerWidgetToggledNotify(toggled); } void ToggleSupportShortcuts(bool toggled) { diff --git a/Telegram/SourceFiles/media/player/media_player_instance.cpp b/Telegram/SourceFiles/media/player/media_player_instance.cpp index eb5cadaa6a..2150ba0c10 100644 --- a/Telegram/SourceFiles/media/player/media_player_instance.cpp +++ b/Telegram/SourceFiles/media/player/media_player_instance.cpp @@ -388,6 +388,21 @@ rpl::producer<> Media::Player::Instance::playlistChanges( return data->playlistChanges.events(); } +rpl::producer<> Media::Player::Instance::stops(AudioMsgId::Type type) const { + return _playerStopped.events( + ) | rpl::filter([=](auto t) { + return t == type; + }) | rpl::to_empty; +} + +rpl::producer<> Media::Player::Instance::startsPlay( + AudioMsgId::Type type) const { + return _playerStartedPlay.events( + ) | rpl::filter([=](auto t) { + return t == type; + }) | rpl::to_empty; +} + not_null instance() { Expects(SingleInstance != nullptr); return SingleInstance; @@ -426,6 +441,7 @@ void Instance::play(const AudioMsgId &audioId) { if (document->isVoiceMessage() || document->isVideoMessage()) { document->owner().markMediaRead(document); } + _playerStartedPlay.fire_copy({audioId.type()}); } void Instance::playPause(const AudioMsgId &audioId) { @@ -507,6 +523,7 @@ void Instance::stop(AudioMsgId::Type type) { clearStreamed(data); } data->resumeOnCallEnd = false; + _playerStopped.fire_copy({type}); } } diff --git a/Telegram/SourceFiles/media/player/media_player_instance.h b/Telegram/SourceFiles/media/player/media_player_instance.h index 2f9075791c..2f2997e8e5 100644 --- a/Telegram/SourceFiles/media/player/media_player_instance.h +++ b/Telegram/SourceFiles/media/player/media_player_instance.h @@ -148,16 +148,13 @@ public: rpl::producer<> playlistChanges(AudioMsgId::Type type) const; - void playerWidgetToggledNotify(bool toggled) { - _playerWidgetToggled.fire_copy({toggled}); - } - rpl::producer playerWidgetToggled() const { - return _playerWidgetToggled.events(); - } rpl::producer updatedNotifier() const { return _updatedNotifier.events(); } + rpl::producer<> stops(AudioMsgId::Type type) const; + rpl::producer<> startsPlay(AudioMsgId::Type type) const; + bool pauseGifByRoundVideo() const; void documentLoadProgress(DocumentData *document); @@ -268,7 +265,8 @@ private: base::Observable _trackChangedNotifier; base::Observable _repeatChangedNotifier; - rpl::event_stream _playerWidgetToggled; + rpl::event_stream _playerStopped; + rpl::event_stream _playerStartedPlay; rpl::event_stream _updatedNotifier; rpl::lifetime _lifetime;