Merge lp:~ricmm/media-hub/async-bus into lp:media-hub

Proposed by Ricardo Mendoza
Status: Merged
Merged at revision: 28
Proposed branch: lp:~ricmm/media-hub/async-bus
Merge into: lp:media-hub
Prerequisite: lp:~phablet-team/media-hub/video-support
Diff against target: 139 lines (+35/-1)
5 files modified
include/core/media/player.h (+2/-0)
src/core/media/player_implementation.cpp (+6/-0)
src/core/media/player_implementation.h (+1/-0)
src/core/media/player_stub.cpp (+24/-1)
src/core/media/player_stub.h (+2/-0)
To merge this branch: bzr merge lp:~ricmm/media-hub/async-bus
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Needs Fixing
Jim Hodapp Pending
Review via email: mp+214854@code.launchpad.net

Commit message

Spawn worker thread for bus signal listeners.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
lp:~ricmm/media-hub/async-bus updated
30. By Ricardo Mendoza

Extend API to allow clients to register for EOS signals

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'include/core/media/player.h'
2--- include/core/media/player.h 2014-04-09 00:42:49 +0000
3+++ include/core/media/player.h 2014-04-09 00:42:49 +0000
4@@ -44,6 +44,7 @@
5 /** Used to set a callback function to be called when a frame is ready to be rendered **/
6 typedef void (*FrameAvailableCbHybris)(GLConsumerWrapperHybris wrapper, void *context);
7 typedef void (*FrameAvailableCb)(void *context);
8+ typedef void (*PlaybackCompleteCb)(void *context);
9
10 struct Configuration;
11
12@@ -90,6 +91,7 @@
13
14 // TODO: Convert this to be a signal
15 virtual void set_frame_available_callback(FrameAvailableCb cb, void *context) = 0;
16+ virtual void set_playback_complete_callback(PlaybackCompleteCb cb, void *context) = 0;
17
18 virtual const core::Property<bool>& can_play() const = 0;
19 virtual const core::Property<bool>& can_pause() const = 0;
20
21=== modified file 'src/core/media/player_implementation.cpp'
22--- src/core/media/player_implementation.cpp 2014-04-09 00:42:49 +0000
23+++ src/core/media/player_implementation.cpp 2014-04-09 00:42:49 +0000
24@@ -188,6 +188,12 @@
25 // This method is client-side only and is simply a no-op for the service side
26 }
27
28+void media::PlayerImplementation::set_playback_complete_callback(
29+ UNUSED PlaybackCompleteCb cb, UNUSED void *context)
30+{
31+ // This method is client-side only and is simply a no-op for the service side
32+}
33+
34 void media::PlayerImplementation::seek_to(const std::chrono::microseconds& ms)
35 {
36 d->engine->seek_to(ms);
37
38=== modified file 'src/core/media/player_implementation.h'
39--- src/core/media/player_implementation.h 2014-04-09 00:42:49 +0000
40+++ src/core/media/player_implementation.h 2014-04-09 00:42:49 +0000
41@@ -51,6 +51,7 @@
42 virtual void pause();
43 virtual void stop();
44 virtual void set_frame_available_callback(FrameAvailableCb cb, void *context);
45+ virtual void set_playback_complete_callback(PlaybackCompleteCb cb, void *context);
46 virtual void seek_to(const std::chrono::microseconds& offset);
47
48 private:
49
50=== modified file 'src/core/media/player_stub.cpp'
51--- src/core/media/player_stub.cpp 2014-04-09 00:42:49 +0000
52+++ src/core/media/player_stub.cpp 2014-04-09 00:42:49 +0000
53@@ -136,7 +136,7 @@
54
55 FrameAvailableCb frame_available_cb;
56 void *frame_available_context;
57-
58+
59 dbus::Bus::Ptr bus;
60 dbus::types::ObjectPath path;
61 dbus::Object::Ptr object;
62@@ -176,6 +176,8 @@
63 seeked,
64 eos
65 },
66+ playback_complete_cb(nullptr),
67+ playback_complete_context(nullptr),
68 seeked_to(),
69 end_of_stream()
70 {
71@@ -187,6 +189,8 @@
72 dbus.end_of_stream->connect([this]()
73 {
74 std::cout << "EndOfStream signal arrived via the bus." << std::endl;
75+ if (playback_complete_cb)
76+ playback_complete_cb(playback_complete_context);
77 end_of_stream();
78 });
79 }
80@@ -196,6 +200,15 @@
81 std::shared_ptr<DBusSeekedToSignal> seeked_to;
82 std::shared_ptr<DBusEndOfStreamSignal> end_of_stream;
83 } dbus;
84+
85+ void set_playback_complete_cb(PlaybackCompleteCb cb, void *context)
86+ {
87+ playback_complete_cb = cb;
88+ playback_complete_context = context;
89+ }
90+
91+ PlaybackCompleteCb playback_complete_cb;
92+ void *playback_complete_context;
93 core::Signal<uint64_t> seeked_to;
94 core::Signal<void> end_of_stream;
95 } signals;
96@@ -207,6 +220,11 @@
97 : dbus::Stub<Player>(the_session_bus()),
98 d(new Private{parent, access_service(), object_path})
99 {
100+ auto bus = the_session_bus();
101+ worker = std::move(std::thread([bus]()
102+ {
103+ bus->run();
104+ }));
105 }
106
107 media::PlayerStub::~PlayerStub()
108@@ -299,6 +317,11 @@
109 d->set_frame_available_cb(cb, context);
110 }
111
112+void media::PlayerStub::set_playback_complete_callback(PlaybackCompleteCb cb, void *context)
113+{
114+ d->signals.set_playback_complete_cb(cb, context);
115+}
116+
117 const core::Property<bool>& media::PlayerStub::can_play() const
118 {
119 return *d->properties.can_play;
120
121=== modified file 'src/core/media/player_stub.h'
122--- src/core/media/player_stub.h 2014-04-09 00:42:49 +0000
123+++ src/core/media/player_stub.h 2014-04-09 00:42:49 +0000
124@@ -55,6 +55,7 @@
125 virtual void stop();
126
127 virtual void set_frame_available_callback(FrameAvailableCb cb, void *context);
128+ virtual void set_playback_complete_callback(PlaybackCompleteCb cb, void *context);
129
130 virtual const core::Property<bool>& can_play() const;
131 virtual const core::Property<bool>& can_pause() const;
132@@ -85,6 +86,7 @@
133 private:
134 struct Private;
135 std::unique_ptr<Private> d;
136+ std::thread worker;
137 };
138 }
139 }

Subscribers

People subscribed via source and target branches