Merge lp:~justinmcp/oxide/media-hub-audio-fixes into lp:~oxide-developers/oxide/oxide.trunk

Proposed by Justin McPherson
Status: Merged
Merged at revision: 975
Proposed branch: lp:~justinmcp/oxide/media-hub-audio-fixes
Merge into: lp:~oxide-developers/oxide/oxide.trunk
Diff against target: 140 lines (+31/-23)
4 files modified
shared/browser/media/mediahub_player_shim.cc (+22/-16)
shared/browser/media/mediahub_player_shim.h (+1/-1)
shared/browser/media/oxide_player_media_hub.cc (+7/-5)
shared/browser/media/oxide_player_media_hub.h (+1/-1)
To merge this branch: bzr merge lp:~justinmcp/oxide/media-hub-audio-fixes
Reviewer Review Type Date Requested Status
Chris Coulson Approve
Review via email: mp+249927@code.launchpad.net

Commit message

Fixes to media-hub audio playback.

To post a comment you must log in.
952. By Justin McPherson <justin@phablet-dev>

Don't capture the shared player instance.

Revision history for this message
Chris Coulson (chrisccoulson) wrote :

Thanks for this, although I'm not entirely sure what the fixes are for. I'll trust that they're correct :)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'shared/browser/media/mediahub_player_shim.cc'
--- shared/browser/media/mediahub_player_shim.cc 2015-01-16 23:12:06 +0000
+++ shared/browser/media/mediahub_player_shim.cc 2015-02-17 14:23:15 +0000
@@ -9,23 +9,35 @@
99
10namespace {10namespace {
1111
12std::map<int, std::shared_ptr<Player> > g_mediahub_players;12typedef std::map<int, std::shared_ptr<Player> > player_map;
13
14player_map g_mediahub_players;
15
16player_map::iterator find_player(Player *player)
17{
18 player_map::iterator it = g_mediahub_players.begin();
19 for (; it != g_mediahub_players.end(); it++) {
20 if (it->second.get() == player) {
21 break;
22 }
23 }
24 return it;
25}
1326
14void setup_delegate(MediaHubDelegate *delegate, std::shared_ptr<Player>& player)27void setup_delegate(MediaHubDelegate *delegate, std::shared_ptr<Player>& player)
15{28{
16 player->seeked_to().connect([delegate](int64_t pos) {29 player->seeked_to().connect([delegate](int64_t pos) {
17 delegate->seeked_to(pos);30 delegate->seeked_to(pos);
18 });31 });
1932
20 player->end_of_stream().connect([delegate]() {33 player->end_of_stream().connect([delegate]() {
21 delegate->end_of_stream();34 delegate->end_of_stream();
22 });35 });
2336
24 player->playback_status_changed().connect([player, delegate](Player::PlaybackStatus status) {37 player->playback_status_changed().connect([delegate](Player::PlaybackStatus status) {
25 delegate->playback_status_changed(38 delegate->playback_status_changed(
26 static_cast<MediaHubDelegate::Status>(status),39 static_cast<MediaHubDelegate::Status>(status)
27 player->duration().get()40 );
28 );
29 });41 });
30}42}
31}43}
@@ -80,8 +92,7 @@
80 setup_delegate(delegate, player);92 setup_delegate(delegate, player);
8193
82 delegate->playback_status_changed(94 delegate->playback_status_changed(
83 MediaHubDelegate::Status(player->playback_status().get()),95 MediaHubDelegate::Status(player->playback_status().get())
84 player->duration().get()
85 );96 );
86 }97 }
8798
@@ -217,12 +228,7 @@
217mediahub_release(MediaHubClientHandle handle)228mediahub_release(MediaHubClientHandle handle)
218{229{
219 try {230 try {
220 auto it = g_mediahub_players.begin();231 auto it = find_player(static_cast<Player*>(handle));
221 for (; it != g_mediahub_players.end(); it++) {
222 if (it->second.get() == handle) {
223 break;
224 }
225 }
226 if (it != g_mediahub_players.end()) {232 if (it != g_mediahub_players.end()) {
227 g_mediahub_players.erase(it);233 g_mediahub_players.erase(it);
228 }234 }
229235
=== modified file 'shared/browser/media/mediahub_player_shim.h'
--- shared/browser/media/mediahub_player_shim.h 2015-01-16 23:12:06 +0000
+++ shared/browser/media/mediahub_player_shim.h 2015-02-17 14:23:15 +0000
@@ -15,7 +15,7 @@
1515
16 virtual void seeked_to(int64_t pos) = 0;16 virtual void seeked_to(int64_t pos) = 0;
17 virtual void end_of_stream() = 0;17 virtual void end_of_stream() = 0;
18 virtual void playback_status_changed(Status status, int64_t duration) = 0;18 virtual void playback_status_changed(Status status) = 0;
19};19};
2020
21#if defined(__cplusplus)21#if defined(__cplusplus)
2222
=== modified file 'shared/browser/media/oxide_player_media_hub.cc'
--- shared/browser/media/oxide_player_media_hub.cc 2015-01-20 17:26:44 +0000
+++ shared/browser/media/oxide_player_media_hub.cc 2015-02-17 14:23:15 +0000
@@ -57,7 +57,9 @@
5757
58MediaPlayerMediaHub::~MediaPlayerMediaHub() {58MediaPlayerMediaHub::~MediaPlayerMediaHub() {
59 timer_.Stop();59 timer_.Stop();
60 mediahub_stop(media_hub_client_);60 if (!use_fixed_session_) {
61 mediahub_stop(media_hub_client_);
62 }
61 mediahub_release(media_hub_client_);63 mediahub_release(media_hub_client_);
62}64}
6365
@@ -157,23 +159,23 @@
157 manager_->OnPlaybackComplete(player_id());159 manager_->OnPlaybackComplete(player_id());
158}160}
159161
160void MediaPlayerMediaHub::playback_status_changed(MediaHubDelegate::Status status, int64_t duration) {162void MediaPlayerMediaHub::playback_status_changed(MediaHubDelegate::Status status) {
161 switch (status) {163 switch (status) {
162 case null:164 case null:
163 case ready:165 case ready:
164 manager_->OnMediaMetadataChanged(player_id(),166 manager_->OnMediaMetadataChanged(player_id(),
165 base::TimeDelta::FromMilliseconds(duration),167 base::TimeDelta::FromMilliseconds(mediahub_get_duration(media_hub_client_)),
166 0, 0, true);168 0, 0, true);
167 break;169 break;
168 case playing:170 case playing:
169 manager_->OnMediaMetadataChanged(player_id(),171 manager_->OnMediaMetadataChanged(player_id(),
170 base::TimeDelta::FromMilliseconds(duration),172 base::TimeDelta::FromMilliseconds(mediahub_get_duration(media_hub_client_)),
171 0, 0, true);173 0, 0, true);
172 manager_->OnPlayerPlay(player_id());174 manager_->OnPlayerPlay(player_id());
173 break;175 break;
174 case paused:176 case paused:
175 manager_->OnMediaMetadataChanged(player_id(),177 manager_->OnMediaMetadataChanged(player_id(),
176 base::TimeDelta::FromMilliseconds(duration),178 base::TimeDelta::FromMilliseconds(mediahub_get_duration(media_hub_client_)),
177 0, 0, true);179 0, 0, true);
178 manager_->OnPlayerPause(player_id());180 manager_->OnPlayerPause(player_id());
179 break;181 break;
180182
=== modified file 'shared/browser/media/oxide_player_media_hub.h'
--- shared/browser/media/oxide_player_media_hub.h 2015-01-20 17:26:44 +0000
+++ shared/browser/media/oxide_player_media_hub.h 2015-02-17 14:23:15 +0000
@@ -63,7 +63,7 @@
63 // MediaHubDelegate63 // MediaHubDelegate
64 void seeked_to(int64_t pos);64 void seeked_to(int64_t pos);
65 void end_of_stream();65 void end_of_stream();
66 void playback_status_changed(MediaHubDelegate::Status status, int64_t duration);66 void playback_status_changed(MediaHubDelegate::Status status);
6767
68 protected:68 protected:
69 void SetDuration(base::TimeDelta time);69 void SetDuration(base::TimeDelta time);

Subscribers

People subscribed via source and target branches