aboutsummaryrefslogtreecommitdiffstats
path: root/binding
diff options
context:
space:
mode:
authorMatt Ranostay <matt.ranostay@konsulko.com>2018-06-11 21:08:45 -0700
committerMatt Ranostay <matt.ranostay@konsulko.com>2018-06-12 10:44:28 -0700
commitb25e88665a7e71c97ff00e83310d49f92189572d (patch)
tree264858fae2e1385f7d8429d5fd0f8171aca5eef4 /binding
parent8fd47cf37b0bfc8d454d12c444ce8d4272e068d2 (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')
-rw-r--r--binding/afm-mediaplayer-binding.c13
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);
}