diff --git a/Telegram/SourceFiles/calls/calls_top_bar.cpp b/Telegram/SourceFiles/calls/calls_top_bar.cpp index 06863bc34f..03e92a3ee4 100644 --- a/Telegram/SourceFiles/calls/calls_top_bar.cpp +++ b/Telegram/SourceFiles/calls/calls_top_bar.cpp @@ -228,14 +228,14 @@ private: TopBar::TopBar( QWidget *parent, - const base::weak_ptr &call, + Call *call, std::shared_ptr show) : TopBar(parent, show, call, nullptr) { } TopBar::TopBar( QWidget *parent, - const base::weak_ptr &call, + GroupCall *call, std::shared_ptr show) : TopBar(parent, show, nullptr, call) { } @@ -243,8 +243,8 @@ TopBar::TopBar( TopBar::TopBar( QWidget *parent, std::shared_ptr show, - const base::weak_ptr &call, - const base::weak_ptr &groupCall) + Call *call, + GroupCall *groupCall) : RpWidget(parent) , _call(call) , _groupCall(groupCall) diff --git a/Telegram/SourceFiles/calls/calls_top_bar.h b/Telegram/SourceFiles/calls/calls_top_bar.h index 7b62e6673a..6f3610773c 100644 --- a/Telegram/SourceFiles/calls/calls_top_bar.h +++ b/Telegram/SourceFiles/calls/calls_top_bar.h @@ -42,11 +42,11 @@ class TopBar : public Ui::RpWidget { public: TopBar( QWidget *parent, - const base::weak_ptr &call, + Call *call, std::shared_ptr show); TopBar( QWidget *parent, - const base::weak_ptr &call, + GroupCall *call, std::shared_ptr show); ~TopBar(); @@ -64,8 +64,8 @@ private: TopBar( QWidget *parent, std::shared_ptr show, - const base::weak_ptr &call, - const base::weak_ptr &groupCall); + Call *call, + GroupCall *groupCall); void initControls(); void setupInitialBrush(); diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index d2437cfa46..2a458c24e9 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -926,15 +926,15 @@ void MainWidget::setCurrentCall(Calls::Call *call) { } _currentCallLifetime.destroy(); _currentCall = call; - if (_currentCall) { + if (call) { _callTopBar.destroy(); - _currentCall->stateValue( + call->stateValue( ) | rpl::start_with_next([=](Calls::Call::State state) { using State = Calls::Call::State; if (state != State::Established) { destroyCallTopBar(); } else if (!_callTopBar) { - createCallTopBar(); + createCallTopBar(call, nullptr); } }, _currentCallLifetime); } else { @@ -948,7 +948,7 @@ void MainWidget::setCurrentGroupCall(Calls::GroupCall *call) { } _currentCallLifetime.destroy(); _currentGroupCall = call; - if (_currentGroupCall) { + if (call) { _callTopBar.destroy(); _currentGroupCall->stateValue( ) | rpl::start_with_next([=](Calls::GroupCall::State state) { @@ -960,7 +960,7 @@ void MainWidget::setCurrentGroupCall(Calls::GroupCall *call) { && state != State::Connecting) { destroyCallTopBar(); } else if (!_callTopBar) { - createCallTopBar(); + createCallTopBar(nullptr, call); } }, _currentCallLifetime); } else { @@ -968,15 +968,17 @@ void MainWidget::setCurrentGroupCall(Calls::GroupCall *call) { } } -void MainWidget::createCallTopBar() { - Expects(_currentCall != nullptr || _currentGroupCall != nullptr); +void MainWidget::createCallTopBar( + Calls::Call *call, + Calls::GroupCall *group) { + Expects(call || group); const auto show = controller()->uiShow(); _callTopBar.create( this, - (_currentCall - ? object_ptr(this, _currentCall, show) - : object_ptr(this, _currentGroupCall, show))); + (call + ? object_ptr(this, call, show) + : object_ptr(this, group, show))); _callTopBar->entity()->initBlobsUnder(this, _callTopBar->geometryValue()); _callTopBar->heightValue( ) | rpl::start_with_next([this](int value) { diff --git a/Telegram/SourceFiles/mainwidget.h b/Telegram/SourceFiles/mainwidget.h index 5d63798962..48ec64735b 100644 --- a/Telegram/SourceFiles/mainwidget.h +++ b/Telegram/SourceFiles/mainwidget.h @@ -244,7 +244,7 @@ private: void setCurrentCall(Calls::Call *call); void setCurrentGroupCall(Calls::GroupCall *call); - void createCallTopBar(); + void createCallTopBar(Calls::Call *call, Calls::GroupCall *group); void destroyCallTopBar(); void callTopBarHeightUpdated(int callTopBarHeight);