96 resume_key(
Player::invalidKey),
97 power_state_controller(
media::
power::StateController::instance()),
99 audio_output_state(
media::
audio::OutputState::Speaker),
100 m_currentPlayer(
Player::invalidKey),
103 QObject::connect(&battery_observer,
107 const bool resume_play_after_phonecall =
false;
110 switch (battery_observer.level())
123 QObject::connect(&battery_observer,
129 if (!battery_observer.isWarningActive())
133 QObject::connect(&audio_output_observer,
138 const bool resume_play_after_phonecall =
false;
142 MH_INFO(
"AudioOutputObserver reports that output is now Headphones/Headset.");
145 MH_INFO(
"AudioOutputObserver reports that output is now Speaker.");
151 MH_INFO(
"AudioOutputObserver reports that output is now External.");
154 audio_output_state = state;
157 QObject::connect(&call_monitor,
161 const bool resume_play_after_phonecall =
true;
162 switch (call_monitor.callState()) {
164 MH_INFO(
"Got call started signal, pausing all multimedia sessions");
170 MH_INFO(
"Got call ended signal, resuming paused multimedia sessions");
176 QObject::connect(&recorder_observer,
183 power_state_controller->requestDisplayOn();
186 const bool resume_play_after_phonecall =
false;
191 power_state_controller->releaseDisplayOn();
216 std::for_each(paused_sessions.begin(), paused_sessions.end(),
217 [
this, resume_video_sessions](
const std::pair<media::Player::PlayerKey, bool> &paused_player_pair) {
218 const media::Player::PlayerKey key = paused_player_pair.first;
219 const bool resume_play_after_phonecall = paused_player_pair.second;
220 PlayerImplementation *player = m_players.value(key);
222 MH_WARNING(
"Failed to look up Player instance for key %d"
223 ", no valid Player instance for that key value and cannot automatically resume"
224 " paused players. This most likely means that media-hub-server has crashed and"
229 if ((resume_video_sessions || player->isAudioSource()) && resume_play_after_phonecall)
232 MH_INFO(
"Not auto-resuming video player session or other type of player session.");
235 paused_sessions.clear();
326 d->client_death_observer,
330 this, [
this, key=client.
key]()
332 Q_D(ServiceImplementation);
334 PlayerImplementation *player = d->m_players.value(key);
336 player->audioStreamRole() == Player::AudioStreamRole::multimedia &&
337 key == currentPlayer())
339 MH_DEBUG(
"==== Resetting current player");
340 d->setCurrentPlayer(Player::invalidKey);
344 d->m_players.remove(key);
345 player->deleteLater();
350 this, [d, key=client.key]() {
351 d->onPlaybackRequested(key);
354 d->m_players[client.key] = player;