diff options
author | Matt Ranostay <matt.ranostay@konsulko.com> | 2018-06-11 21:08:45 -0700 |
---|---|---|
committer | Matt Ranostay <matt.ranostay@konsulko.com> | 2018-06-12 10:44:28 -0700 |
commit | b25e88665a7e71c97ff00e83310d49f92189572d (patch) | |
tree | 264858fae2e1385f7d8429d5fd0f8171aca5eef4 /binding/afm-mediaplayer-binding.c | |
parent | 8fd47cf37b0bfc8d454d12c444ce8d4272e068d2 (diff) |
binding: mediaplayer: fix race condition with initial album art
gst_init and audio sinks weren't always getting setup in time for
a subscriber to get the initial album art.
Solution is to move the setup out of the pthread callback and confirm
they are ran before .init() returns
Bug-AGL: SPEC-1496
Change-Id: I70779bcb1ca539146c98718f5b0edd781f9899b4
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
Diffstat (limited to 'binding/afm-mediaplayer-binding.c')
-rw-r--r-- | binding/afm-mediaplayer-binding.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/binding/afm-mediaplayer-binding.c b/binding/afm-mediaplayer-binding.c index e46a7cb..24b66bf 100644 --- a/binding/afm-mediaplayer-binding.c +++ b/binding/afm-mediaplayer-binding.c @@ -711,7 +711,7 @@ static gboolean position_event(CustomData *data) return TRUE; } -static void *gstreamer_loop_thread(void *ptr) +static void gstreamer_init() { GstBus *bus; json_object *response; @@ -777,10 +777,6 @@ static void *gstreamer_loop_thread(void *ptr) populate_playlist(val); } json_object_put(response); - - g_main_loop_run(g_main_loop_new(NULL, FALSE)); - - return NULL; } static void onevent(const char *event, struct json_object *object) @@ -843,6 +839,11 @@ static void onevent(const char *event, struct json_object *object) afb_event_push(playlist_event, jresp); } +void *gstreamer_loop_thread(void *ptr) +{ + g_main_loop_run(g_main_loop_new(NULL, FALSE)); +} + static int init() { pthread_t thread_id; json_object *response, *query; @@ -879,6 +880,8 @@ static int init() { metadata_event = afb_daemon_make_event("metadata"); playlist_event = afb_daemon_make_event("playlist"); + gstreamer_init(); + return pthread_create(&thread_id, NULL, gstreamer_loop_thread, NULL); } |