mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-02-21 23:57:38 +00:00
Pass QWindow to PowerSaveBlocker.
This commit is contained in:
parent
28dff5ba6d
commit
f918c6bb83
@ -17,7 +17,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||||||
#include "calls/calls_instance.h"
|
#include "calls/calls_instance.h"
|
||||||
#include "base/openssl_help.h"
|
#include "base/openssl_help.h"
|
||||||
#include "base/random.h"
|
#include "base/random.h"
|
||||||
#include "base/power_save_blocker.h"
|
|
||||||
#include "mtproto/mtproto_dh_utils.h"
|
#include "mtproto/mtproto_dh_utils.h"
|
||||||
#include "mtproto/mtproto_config.h"
|
#include "mtproto/mtproto_config.h"
|
||||||
#include "core/application.h"
|
#include "core/application.h"
|
||||||
@ -164,17 +163,12 @@ Call::Call(
|
|||||||
, _api(&_user->session().mtp())
|
, _api(&_user->session().mtp())
|
||||||
, _type(type)
|
, _type(type)
|
||||||
, _discardByTimeoutTimer([=] { hangup(); })
|
, _discardByTimeoutTimer([=] { hangup(); })
|
||||||
, _powerSaveBlocker(std::make_unique<base::PowerSaveBlocker>(
|
|
||||||
base::PowerSaveBlockType::PreventDisplaySleep,
|
|
||||||
u"Video call is active"_q))
|
|
||||||
, _videoIncoming(
|
, _videoIncoming(
|
||||||
std::make_unique<Webrtc::VideoTrack>(
|
std::make_unique<Webrtc::VideoTrack>(
|
||||||
StartVideoState(video)))
|
StartVideoState(video)))
|
||||||
, _videoOutgoing(
|
, _videoOutgoing(
|
||||||
std::make_unique<Webrtc::VideoTrack>(
|
std::make_unique<Webrtc::VideoTrack>(
|
||||||
StartVideoState(video))) {
|
StartVideoState(video))) {
|
||||||
;
|
|
||||||
|
|
||||||
if (_type == Type::Outgoing) {
|
if (_type == Type::Outgoing) {
|
||||||
setState(State::Requesting);
|
setState(State::Requesting);
|
||||||
} else {
|
} else {
|
||||||
@ -1014,7 +1008,6 @@ void Call::setState(State state) {
|
|||||||
|| state == State::Busy) {
|
|| state == State::Busy) {
|
||||||
// Destroy controller before destroying Call Panel,
|
// Destroy controller before destroying Call Panel,
|
||||||
// so that the panel hide animation is smooth.
|
// so that the panel hide animation is smooth.
|
||||||
_powerSaveBlocker = nullptr;
|
|
||||||
destroyController();
|
destroyController();
|
||||||
}
|
}
|
||||||
switch (state) {
|
switch (state) {
|
||||||
|
@ -13,10 +13,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||||||
#include "mtproto/sender.h"
|
#include "mtproto/sender.h"
|
||||||
#include "mtproto/mtproto_auth_key.h"
|
#include "mtproto/mtproto_auth_key.h"
|
||||||
|
|
||||||
namespace base {
|
|
||||||
class PowerSaveBlocker;
|
|
||||||
} // namespace base
|
|
||||||
|
|
||||||
namespace Media {
|
namespace Media {
|
||||||
namespace Audio {
|
namespace Audio {
|
||||||
class Track;
|
class Track;
|
||||||
@ -273,8 +269,6 @@ private:
|
|||||||
base::DelayedCallTimer _finishByTimeoutTimer;
|
base::DelayedCallTimer _finishByTimeoutTimer;
|
||||||
base::Timer _discardByTimeoutTimer;
|
base::Timer _discardByTimeoutTimer;
|
||||||
|
|
||||||
std::unique_ptr<base::PowerSaveBlocker> _powerSaveBlocker;
|
|
||||||
|
|
||||||
rpl::variable<bool> _muted = false;
|
rpl::variable<bool> _muted = false;
|
||||||
|
|
||||||
DhConfig _dhConfig;
|
DhConfig _dhConfig;
|
||||||
|
@ -44,6 +44,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||||||
#include "apiwrap.h"
|
#include "apiwrap.h"
|
||||||
#include "platform/platform_specific.h"
|
#include "platform/platform_specific.h"
|
||||||
#include "base/platform/base_platform_info.h"
|
#include "base/platform/base_platform_info.h"
|
||||||
|
#include "base/power_save_blocker.h"
|
||||||
#include "window/main_window.h"
|
#include "window/main_window.h"
|
||||||
#include "webrtc/webrtc_video_track.h"
|
#include "webrtc/webrtc_video_track.h"
|
||||||
#include "webrtc/webrtc_media_devices.h"
|
#include "webrtc/webrtc_media_devices.h"
|
||||||
@ -357,6 +358,7 @@ void Panel::reinitWithCall(Call *call) {
|
|||||||
if (!_call) {
|
if (!_call) {
|
||||||
_incoming = nullptr;
|
_incoming = nullptr;
|
||||||
_outgoingVideoBubble = nullptr;
|
_outgoingVideoBubble = nullptr;
|
||||||
|
_powerSaveBlocker = nullptr;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -497,6 +499,11 @@ void Panel::reinitWithCall(Call *call) {
|
|||||||
_camera->raise();
|
_camera->raise();
|
||||||
_mute->raise();
|
_mute->raise();
|
||||||
|
|
||||||
|
_powerSaveBlocker = std::make_unique<base::PowerSaveBlocker>(
|
||||||
|
base::PowerSaveBlockType::PreventDisplaySleep,
|
||||||
|
u"Video call is active"_q,
|
||||||
|
window()->windowHandle());
|
||||||
|
|
||||||
_incoming->widget()->lower();
|
_incoming->widget()->lower();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -804,6 +811,10 @@ void Panel::stateChanged(State state) {
|
|||||||
&& (state != State::EndedByOtherDevice)
|
&& (state != State::EndedByOtherDevice)
|
||||||
&& (state != State::FailedHangingUp)
|
&& (state != State::FailedHangingUp)
|
||||||
&& (state != State::Failed)) {
|
&& (state != State::Failed)) {
|
||||||
|
if (state == State::Busy) {
|
||||||
|
_powerSaveBlocker = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
auto toggleButton = [&](auto &&button, bool visible) {
|
auto toggleButton = [&](auto &&button, bool visible) {
|
||||||
button->toggle(
|
button->toggle(
|
||||||
visible,
|
visible,
|
||||||
|
@ -19,6 +19,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||||||
|
|
||||||
class Image;
|
class Image;
|
||||||
|
|
||||||
|
namespace base {
|
||||||
|
class PowerSaveBlocker;
|
||||||
|
} // namespace base
|
||||||
|
|
||||||
namespace Data {
|
namespace Data {
|
||||||
class PhotoMedia;
|
class PhotoMedia;
|
||||||
class CloudImageView;
|
class CloudImageView;
|
||||||
@ -130,6 +134,8 @@ private:
|
|||||||
std::unique_ptr<Ui::Platform::SeparateTitleControls> _controls;
|
std::unique_ptr<Ui::Platform::SeparateTitleControls> _controls;
|
||||||
#endif // !Q_OS_MAC
|
#endif // !Q_OS_MAC
|
||||||
|
|
||||||
|
std::unique_ptr<base::PowerSaveBlocker> _powerSaveBlocker;
|
||||||
|
|
||||||
QSize _incomingFrameSize;
|
QSize _incomingFrameSize;
|
||||||
|
|
||||||
rpl::lifetime _callLifetime;
|
rpl::lifetime _callLifetime;
|
||||||
|
@ -27,7 +27,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||||||
#include "data/data_peer_values.h"
|
#include "data/data_peer_values.h"
|
||||||
#include "data/data_session.h"
|
#include "data/data_session.h"
|
||||||
#include "base/global_shortcuts.h"
|
#include "base/global_shortcuts.h"
|
||||||
#include "base/power_save_blocker.h"
|
|
||||||
#include "base/random.h"
|
#include "base/random.h"
|
||||||
#include "webrtc/webrtc_video_track.h"
|
#include "webrtc/webrtc_video_track.h"
|
||||||
#include "webrtc/webrtc_media_devices.h"
|
#include "webrtc/webrtc_media_devices.h"
|
||||||
@ -568,9 +567,6 @@ GroupCall::GroupCall(
|
|||||||
, _peer(info.peer)
|
, _peer(info.peer)
|
||||||
, _history(_peer->owner().history(_peer))
|
, _history(_peer->owner().history(_peer))
|
||||||
, _api(&_peer->session().mtp())
|
, _api(&_peer->session().mtp())
|
||||||
, _powerSaveBlocker(std::make_unique<base::PowerSaveBlocker>(
|
|
||||||
base::PowerSaveBlockType::PreventDisplaySleep,
|
|
||||||
u"Video chat is active"_q))
|
|
||||||
, _joinAs(info.joinAs)
|
, _joinAs(info.joinAs)
|
||||||
, _possibleJoinAs(std::move(info.possibleJoinAs))
|
, _possibleJoinAs(std::move(info.possibleJoinAs))
|
||||||
, _joinHash(info.joinHash)
|
, _joinHash(info.joinHash)
|
||||||
|
@ -26,7 +26,6 @@ class VideoCaptureInterface;
|
|||||||
namespace base {
|
namespace base {
|
||||||
class GlobalShortcutManager;
|
class GlobalShortcutManager;
|
||||||
class GlobalShortcutValue;
|
class GlobalShortcutValue;
|
||||||
class PowerSaveBlocker;
|
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
|
||||||
namespace Webrtc {
|
namespace Webrtc {
|
||||||
@ -565,8 +564,6 @@ private:
|
|||||||
bool _recordingStoppedByMe = false;
|
bool _recordingStoppedByMe = false;
|
||||||
bool _requestedVideoChannelsUpdateScheduled = false;
|
bool _requestedVideoChannelsUpdateScheduled = false;
|
||||||
|
|
||||||
std::unique_ptr<base::PowerSaveBlocker> _powerSaveBlocker;
|
|
||||||
|
|
||||||
MTP::DcId _broadcastDcId = 0;
|
MTP::DcId _broadcastDcId = 0;
|
||||||
base::flat_map<not_null<LoadPartTask*>, LoadingPart> _broadcastParts;
|
base::flat_map<not_null<LoadPartTask*>, LoadingPart> _broadcastParts;
|
||||||
base::flat_set<
|
base::flat_set<
|
||||||
|
@ -49,6 +49,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||||||
#include "base/unixtime.h"
|
#include "base/unixtime.h"
|
||||||
#include "base/qt_signal_producer.h"
|
#include "base/qt_signal_producer.h"
|
||||||
#include "base/timer_rpl.h"
|
#include "base/timer_rpl.h"
|
||||||
|
#include "base/power_save_blocker.h"
|
||||||
#include "apiwrap.h" // api().kick.
|
#include "apiwrap.h" // api().kick.
|
||||||
#include "api/api_chat_participants.h" // api().kick.
|
#include "api/api_chat_participants.h" // api().kick.
|
||||||
#include "webrtc/webrtc_video_track.h"
|
#include "webrtc/webrtc_video_track.h"
|
||||||
@ -92,6 +93,10 @@ Panel::Panel(not_null<GroupCall*> call)
|
|||||||
window(),
|
window(),
|
||||||
st::groupCallTitle))
|
st::groupCallTitle))
|
||||||
#endif // !Q_OS_MAC
|
#endif // !Q_OS_MAC
|
||||||
|
, _powerSaveBlocker(std::make_unique<base::PowerSaveBlocker>(
|
||||||
|
base::PowerSaveBlockType::PreventDisplaySleep,
|
||||||
|
u"Video chat is active"_q,
|
||||||
|
window()->windowHandle()))
|
||||||
, _viewport(
|
, _viewport(
|
||||||
std::make_unique<Viewport>(widget(), PanelMode::Wide, _window.backend()))
|
std::make_unique<Viewport>(widget(), PanelMode::Wide, _window.backend()))
|
||||||
, _mute(std::make_unique<Ui::CallMuteButton>(
|
, _mute(std::make_unique<Ui::CallMuteButton>(
|
||||||
|
@ -22,6 +22,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||||||
|
|
||||||
class Image;
|
class Image;
|
||||||
|
|
||||||
|
namespace base {
|
||||||
|
class PowerSaveBlocker;
|
||||||
|
} // namespace base
|
||||||
|
|
||||||
namespace Data {
|
namespace Data {
|
||||||
class PhotoMedia;
|
class PhotoMedia;
|
||||||
class CloudImageView;
|
class CloudImageView;
|
||||||
@ -198,6 +202,8 @@ private:
|
|||||||
std::unique_ptr<Ui::Platform::SeparateTitleControls> _controls;
|
std::unique_ptr<Ui::Platform::SeparateTitleControls> _controls;
|
||||||
#endif // !Q_OS_MAC
|
#endif // !Q_OS_MAC
|
||||||
|
|
||||||
|
const std::unique_ptr<base::PowerSaveBlocker> _powerSaveBlocker;
|
||||||
|
|
||||||
rpl::lifetime _callLifetime;
|
rpl::lifetime _callLifetime;
|
||||||
|
|
||||||
object_ptr<Ui::FlatLabel> _title = { nullptr };
|
object_ptr<Ui::FlatLabel> _title = { nullptr };
|
||||||
|
@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||||||
#include "data/data_media_types.h"
|
#include "data/data_media_types.h"
|
||||||
#include "data/data_file_origin.h"
|
#include "data/data_file_origin.h"
|
||||||
#include "window/window_session_controller.h"
|
#include "window/window_session_controller.h"
|
||||||
|
#include "window/window_controller.h"
|
||||||
#include "core/shortcuts.h"
|
#include "core/shortcuts.h"
|
||||||
#include "core/application.h"
|
#include "core/application.h"
|
||||||
#include "main/main_domain.h" // Domain::activeSessionValue.
|
#include "main/main_domain.h" // Domain::activeSessionValue.
|
||||||
@ -577,16 +578,22 @@ void Instance::updatePowerSaveBlocker(
|
|||||||
const auto blockVideo = block
|
const auto blockVideo = block
|
||||||
&& data->current.audio()
|
&& data->current.audio()
|
||||||
&& data->current.audio()->isVideoMessage();
|
&& data->current.audio()->isVideoMessage();
|
||||||
|
const auto windowResolver = [] {
|
||||||
|
const auto window = Core::App().activeWindow();
|
||||||
|
return window ? window->widget()->windowHandle() : nullptr;
|
||||||
|
};
|
||||||
base::UpdatePowerSaveBlocker(
|
base::UpdatePowerSaveBlocker(
|
||||||
data->powerSaveBlocker,
|
data->powerSaveBlocker,
|
||||||
block,
|
block,
|
||||||
base::PowerSaveBlockType::PreventAppSuspension,
|
base::PowerSaveBlockType::PreventAppSuspension,
|
||||||
"Audio playback is active"); // const char*, not QString-construct.
|
[] { return u"Audio playback is active"_q; },
|
||||||
|
windowResolver);
|
||||||
base::UpdatePowerSaveBlocker(
|
base::UpdatePowerSaveBlocker(
|
||||||
data->powerSaveBlockerVideo,
|
data->powerSaveBlockerVideo,
|
||||||
blockVideo,
|
blockVideo,
|
||||||
base::PowerSaveBlockType::PreventDisplaySleep,
|
base::PowerSaveBlockType::PreventDisplaySleep,
|
||||||
"Video playback is active"); // const char*, not QString-construct.
|
[] { return u"Video playback is active"_q; },
|
||||||
|
windowResolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Instance::ensureShuffleMove(not_null<Data*> data, int delta) {
|
void Instance::ensureShuffleMove(not_null<Data*> data, int delta) {
|
||||||
|
@ -2805,7 +2805,8 @@ void OverlayWidget::updatePowerSaveBlocker(
|
|||||||
_streamed->powerSaveBlocker,
|
_streamed->powerSaveBlocker,
|
||||||
block,
|
block,
|
||||||
base::PowerSaveBlockType::PreventDisplaySleep,
|
base::PowerSaveBlockType::PreventDisplaySleep,
|
||||||
"Video playback is active"); // const char*, not QString-construct.
|
[] { return u"Video playback is active"_q; },
|
||||||
|
[=] { return window(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
QImage OverlayWidget::transformedShownContent() const {
|
QImage OverlayWidget::transformedShownContent() const {
|
||||||
|
@ -1539,7 +1539,8 @@ void Pip::updatePowerSaveBlocker(const Player::TrackState &state) {
|
|||||||
_powerSaveBlocker,
|
_powerSaveBlocker,
|
||||||
block,
|
block,
|
||||||
base::PowerSaveBlockType::PreventDisplaySleep,
|
base::PowerSaveBlockType::PreventDisplaySleep,
|
||||||
"Video playback is active"); // const char*, not QString-construct.
|
[] { return u"Video playback is active"_q; },
|
||||||
|
[=] { return _panel.widget()->windowHandle(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pip::updatePlaybackTexts(
|
void Pip::updatePlaybackTexts(
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit d0e2cd26bf288d5f27b121636ff0c80dd2da2c11
|
Subproject commit 0437cd92adc5706c1fe3409a0459c2f70ced21f4
|
2
cmake
2
cmake
@ -1 +1 @@
|
|||||||
Subproject commit 605ad62e110ddd2dea43ae9bf7b7565aa23c0978
|
Subproject commit 6d81711cf8d7feda1314ebccc262eeb28b6f8103
|
Loading…
Reference in New Issue
Block a user