From 28fe98af80cac2f96fd77f847c7b6c63bdc29535 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 24 Jun 2021 10:24:52 +0400 Subject: [PATCH] Add some assertions for a strange crash debugging. --- .../SourceFiles/media/view/media_view_pip.cpp | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/Telegram/SourceFiles/media/view/media_view_pip.cpp b/Telegram/SourceFiles/media/view/media_view_pip.cpp index 84c6f08a8..efaf89b73 100644 --- a/Telegram/SourceFiles/media/view/media_view_pip.cpp +++ b/Telegram/SourceFiles/media/view/media_view_pip.cpp @@ -1009,6 +1009,9 @@ void Pip::handleMousePress(QPoint position, Qt::MouseButton button) { } void Pip::handleMouseRelease(QPoint position, Qt::MouseButton button) { + Expects(1 && _delegate->pipPlaybackSpeed() >= 0.5 + && _delegate->pipPlaybackSpeed() <= 2.); // Debugging strange crash. + const auto weak = Ui::MakeWeak(_panel.widget()); const auto guard = gsl::finally([&] { if (weak) { @@ -1019,10 +1022,22 @@ void Pip::handleMouseRelease(QPoint position, Qt::MouseButton button) { return; } seekUpdate(position); + + Assert(2 && _delegate->pipPlaybackSpeed() >= 0.5 + && _delegate->pipPlaybackSpeed() <= 2.); // Debugging strange crash. + volumeControllerUpdate(position); + + Assert(3 && _delegate->pipPlaybackSpeed() >= 0.5 + && _delegate->pipPlaybackSpeed() <= 2.); // Debugging strange crash. + const auto pressed = base::take(_pressed); if (pressed && *pressed == OverState::Playback) { _panel.setDragDisabled(false); + + Assert(4 && _delegate->pipPlaybackSpeed() >= 0.5 + && _delegate->pipPlaybackSpeed() <= 2.); // Debugging strange crash. + seekFinish(_playbackProgress->value()); } else if (pressed && *pressed == OverState::VolumeController) { _panel.setDragDisabled(false); @@ -1083,6 +1098,9 @@ void Pip::seekProgress(float64 value) { } void Pip::seekFinish(float64 value) { + Expects(5 && _delegate->pipPlaybackSpeed() >= 0.5 + && _delegate->pipPlaybackSpeed() <= 2.); // Debugging strange crash. + if (!_lastDurationMs) { return; } @@ -1556,15 +1574,30 @@ void Pip::playbackPauseResume() { } void Pip::restartAtSeekPosition(crl::time position) { + Expects(6 && _delegate->pipPlaybackSpeed() >= 0.5 + && _delegate->pipPlaybackSpeed() <= 2.); // Debugging strange crash. + if (!_instance.info().video.cover.isNull()) { _preparedCoverStorage = QImage(); _preparedCoverState = ThumbState::Empty; _instance.saveFrameToCover(); } + + Assert(7 && _delegate->pipPlaybackSpeed() >= 0.5 + && _delegate->pipPlaybackSpeed() <= 2.); // Debugging strange crash. + auto options = Streaming::PlaybackOptions(); options.position = position; options.audioId = _instance.player().prepareLegacyState().id; + + Assert(8 && _delegate->pipPlaybackSpeed() >= 0.5 + && _delegate->pipPlaybackSpeed() <= 2.); // Debugging strange crash. + options.speed = _delegate->pipPlaybackSpeed(); + + Assert(9 && options.speed >= 0.5 + && options.speed <= 2.); // Debugging strange crash. + _instance.play(options); if (_startPaused) { _instance.pause();