From e5949dbb8659cfe68820a59eba8064cafe7c5a6a Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 9 Nov 2018 19:16:27 +0400 Subject: [PATCH] Restore player delegate non-delayed (crashfix). --- Telegram/SourceFiles/info/info_layer_widget.cpp | 13 ++++++++++++- Telegram/SourceFiles/info/info_layer_widget.h | 5 +++++ Telegram/SourceFiles/window/layer_widget.cpp | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/info/info_layer_widget.cpp b/Telegram/SourceFiles/info/info_layer_widget.cpp index 0ab65d2d8..49e0c74f9 100644 --- a/Telegram/SourceFiles/info/info_layer_widget.cpp +++ b/Telegram/SourceFiles/info/info_layer_widget.cpp @@ -253,8 +253,19 @@ void LayerWidget::paintEvent(QPaintEvent *e) { } } +void LayerWidget::restoreFloatPlayerDelegate() { + if (!_floatPlayerDelegateRestored) { + _floatPlayerDelegateRestored = true; + _controller->restoreFloatPlayerDelegate(floatPlayerDelegate()); + } +} + +void LayerWidget::closeHook() { + restoreFloatPlayerDelegate(); +} + LayerWidget::~LayerWidget() { - _controller->restoreFloatPlayerDelegate(floatPlayerDelegate()); + restoreFloatPlayerDelegate(); } } // namespace Info diff --git a/Telegram/SourceFiles/info/info_layer_widget.h b/Telegram/SourceFiles/info/info_layer_widget.h index ff67fd4c3..c8b4f231e 100644 --- a/Telegram/SourceFiles/info/info_layer_widget.h +++ b/Telegram/SourceFiles/info/info_layer_widget.h @@ -53,6 +53,9 @@ protected: void paintEvent(QPaintEvent *e) override; private: + void closeHook() override; + + void restoreFloatPlayerDelegate(); not_null<::Media::Player::FloatDelegate*> floatPlayerDelegate(); not_null floatPlayerWidget() override; not_null floatPlayerController() override; @@ -72,6 +75,8 @@ private: bool _inResize = false; bool _tillBottom = false; + bool _floatPlayerDelegateRestored = false; + }; } // namespace Info diff --git a/Telegram/SourceFiles/window/layer_widget.cpp b/Telegram/SourceFiles/window/layer_widget.cpp index cc1524bd4..24739ff8b 100644 --- a/Telegram/SourceFiles/window/layer_widget.cpp +++ b/Telegram/SourceFiles/window/layer_widget.cpp @@ -666,7 +666,7 @@ void LayerStackWidget::showSpecialLayer( object_ptr layer, anim::type animated) { startAnimation([this, layer = std::move(layer)]() mutable { - _specialLayer.destroyDelayed(); + _specialLayer.destroy(); _specialLayer = std::move(layer); initChildLayer(_specialLayer); }, [this] { @@ -699,7 +699,7 @@ void LayerStackWidget::showMainMenu( _mainMenu->setParent(this); }, [this] { clearLayers(); - _specialLayer.destroyDelayed(); + _specialLayer.destroy(); }, Action::ShowMainMenu, animated); }