37 typedef map<media::Player::PlayerKey, std::shared_ptr<media::Player>>
player_map_t;
41 resume_key(UINT32_MAX)
43 bus = std::shared_ptr<dbus::Bus>(
new dbus::Bus(core::dbus::WellKnownBus::session));
44 bus->install_executor(dbus::asio::make_executor(bus));
45 worker = std::move(std::thread([
this]()
52 auto stub_service = dbus::Service::use_service(bus,
"com.canonical.indicator.power");
53 indicator_power_session = stub_service->object_for_path(dbus::types::ObjectPath(
"/com/canonical/indicator/power/Battery"));
59 if (level ==
"low" || level ==
"very_low")
60 pause_all_multimedia_sessions();
69 resume_multimedia_session();
77 if (worker.joinable())
85 std::shared_ptr<media::Player>>(key_, player));
97 auto player_it = player_map.find(key);
98 if (player_it != player_map.end())
100 auto ¤t_player = (*player_it).second;
101 for (
auto& player_pair : player_map)
108 if (player_pair.second->playback_status() == Player::playing
109 && player_pair.first != key
113 cout <<
"Pausing Player with key: " << player_pair.first << endl;
114 player_pair.second->pause();
119 cerr <<
"Could not find Player by key: " << key << endl;
125 for (
auto& player_pair : player_map)
127 if (player_pair.second->playback_status() == Player::playing
130 resume_key = player_pair.first;
131 cout <<
"Will resume playback of Player with key: " << resume_key << endl;
132 player_pair.second->pause();
139 auto player_it = player_map.find(resume_key);
140 if (player_it != player_map.end())
142 auto &player = (*player_it).second;
143 if (player->playback_status() == Player::paused)
145 cout <<
"Resuming playback of Player with key: " << resume_key << endl;
147 resume_key = UINT32_MAX;
161 std::shared_ptr<core::dbus::Property<core::IndicatorPower::PowerLevel>>
power_level;
162 std::shared_ptr<core::dbus::Property<core::IndicatorPower::IsWarning>>
is_warning;
168 cout << __PRETTY_FUNCTION__ << endl;
176 const media::Player::Configuration& conf)
178 std::shared_ptr<media::Player> player = std::make_shared<media::PlayerImplementation>(
179 conf.object_path, shared_from_this(), d->key());
180 d->track_player(player);
186 d->pause_other_sessions(key);