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
1=== modified file 'shared/browser/media/mediahub_player_shim.cc'
2--- shared/browser/media/mediahub_player_shim.cc 2015-01-16 23:12:06 +0000
3+++ shared/browser/media/mediahub_player_shim.cc 2015-02-17 14:23:15 +0000
4@@ -9,23 +9,35 @@
5
6 namespace {
7
8-std::map<int, std::shared_ptr<Player> > g_mediahub_players;
9+typedef std::map<int, std::shared_ptr<Player> > player_map;
10+
11+player_map g_mediahub_players;
12+
13+player_map::iterator find_player(Player *player)
14+{
15+ player_map::iterator it = g_mediahub_players.begin();
16+ for (; it != g_mediahub_players.end(); it++) {
17+ if (it->second.get() == player) {
18+ break;
19+ }
20+ }
21+ return it;
22+}
23
24 void setup_delegate(MediaHubDelegate *delegate, std::shared_ptr<Player>& player)
25 {
26 player->seeked_to().connect([delegate](int64_t pos) {
27- delegate->seeked_to(pos);
28+ delegate->seeked_to(pos);
29 });
30
31 player->end_of_stream().connect([delegate]() {
32- delegate->end_of_stream();
33+ delegate->end_of_stream();
34 });
35
36- player->playback_status_changed().connect([player, delegate](Player::PlaybackStatus status) {
37- delegate->playback_status_changed(
38- static_cast<MediaHubDelegate::Status>(status),
39- player->duration().get()
40- );
41+ player->playback_status_changed().connect([delegate](Player::PlaybackStatus status) {
42+ delegate->playback_status_changed(
43+ static_cast<MediaHubDelegate::Status>(status)
44+ );
45 });
46 }
47 }
48@@ -80,8 +92,7 @@
49 setup_delegate(delegate, player);
50
51 delegate->playback_status_changed(
52- MediaHubDelegate::Status(player->playback_status().get()),
53- player->duration().get()
54+ MediaHubDelegate::Status(player->playback_status().get())
55 );
56 }
57
58@@ -217,12 +228,7 @@
59 mediahub_release(MediaHubClientHandle handle)
60 {
61 try {
62- auto it = g_mediahub_players.begin();
63- for (; it != g_mediahub_players.end(); it++) {
64- if (it->second.get() == handle) {
65- break;
66- }
67- }
68+ auto it = find_player(static_cast<Player*>(handle));
69 if (it != g_mediahub_players.end()) {
70 g_mediahub_players.erase(it);
71 }
72
73=== modified file 'shared/browser/media/mediahub_player_shim.h'
74--- shared/browser/media/mediahub_player_shim.h 2015-01-16 23:12:06 +0000
75+++ shared/browser/media/mediahub_player_shim.h 2015-02-17 14:23:15 +0000
76@@ -15,7 +15,7 @@
77
78 virtual void seeked_to(int64_t pos) = 0;
79 virtual void end_of_stream() = 0;
80- virtual void playback_status_changed(Status status, int64_t duration) = 0;
81+ virtual void playback_status_changed(Status status) = 0;
82 };
83
84 #if defined(__cplusplus)
85
86=== modified file 'shared/browser/media/oxide_player_media_hub.cc'
87--- shared/browser/media/oxide_player_media_hub.cc 2015-01-20 17:26:44 +0000
88+++ shared/browser/media/oxide_player_media_hub.cc 2015-02-17 14:23:15 +0000
89@@ -57,7 +57,9 @@
90
91 MediaPlayerMediaHub::~MediaPlayerMediaHub() {
92 timer_.Stop();
93- mediahub_stop(media_hub_client_);
94+ if (!use_fixed_session_) {
95+ mediahub_stop(media_hub_client_);
96+ }
97 mediahub_release(media_hub_client_);
98 }
99
100@@ -157,23 +159,23 @@
101 manager_->OnPlaybackComplete(player_id());
102 }
103
104-void MediaPlayerMediaHub::playback_status_changed(MediaHubDelegate::Status status, int64_t duration) {
105+void MediaPlayerMediaHub::playback_status_changed(MediaHubDelegate::Status status) {
106 switch (status) {
107 case null:
108 case ready:
109 manager_->OnMediaMetadataChanged(player_id(),
110- base::TimeDelta::FromMilliseconds(duration),
111+ base::TimeDelta::FromMilliseconds(mediahub_get_duration(media_hub_client_)),
112 0, 0, true);
113 break;
114 case playing:
115 manager_->OnMediaMetadataChanged(player_id(),
116- base::TimeDelta::FromMilliseconds(duration),
117+ base::TimeDelta::FromMilliseconds(mediahub_get_duration(media_hub_client_)),
118 0, 0, true);
119 manager_->OnPlayerPlay(player_id());
120 break;
121 case paused:
122 manager_->OnMediaMetadataChanged(player_id(),
123- base::TimeDelta::FromMilliseconds(duration),
124+ base::TimeDelta::FromMilliseconds(mediahub_get_duration(media_hub_client_)),
125 0, 0, true);
126 manager_->OnPlayerPause(player_id());
127 break;
128
129=== modified file 'shared/browser/media/oxide_player_media_hub.h'
130--- shared/browser/media/oxide_player_media_hub.h 2015-01-20 17:26:44 +0000
131+++ shared/browser/media/oxide_player_media_hub.h 2015-02-17 14:23:15 +0000
132@@ -63,7 +63,7 @@
133 // MediaHubDelegate
134 void seeked_to(int64_t pos);
135 void end_of_stream();
136- void playback_status_changed(MediaHubDelegate::Status status, int64_t duration);
137+ void playback_status_changed(MediaHubDelegate::Status status);
138
139 protected:
140 void SetDuration(base::TimeDelta time);

Subscribers

People subscribed via source and target branches