From 908c867aec3db8e7b81281811ac1a0342dddd54d Mon Sep 17 00:00:00 2001 From: prince Date: Tue, 19 Feb 2013 11:32:50 +0530 Subject: [PATCH] Correction: ecore timer must be called in main loop Change-Id: I22b7d58c3c0c453cd9f96f08e0b94c610766f74e --- src/tizen_sound_player/tizen_sound_player.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/tizen_sound_player/tizen_sound_player.c b/src/tizen_sound_player/tizen_sound_player.c index 11ea947..e034379 100644 --- a/src/tizen_sound_player/tizen_sound_player.c +++ b/src/tizen_sound_player/tizen_sound_player.c @@ -345,15 +345,30 @@ _remix_mm_handle_close(void *data) return ECORE_CALLBACK_CANCEL; } -static int -remix_player_flush (RemixEnv *env, RemixBase *base) +static void * +remix_player_timer_add(void *data) { - RemixPlayerData *player_data = remix_base_get_instance_data(env, base); + RemixPlayerData *player_data = data; if (player_data->timeout) ecore_timer_del(player_data->timeout); player_data->timeout = ecore_timer_add(TIMEOUT_FOR_MM_HANDLER, _remix_mm_handle_close, player_data); + return NULL; +} + +static int +remix_player_flush (RemixEnv *env, RemixBase *base) +{ + RemixPlayerData *player_data = remix_base_get_instance_data(env, base); + + if (!player_data) return; + + //ecore timer is not thread safe, must be called in main thread + //the below call should not be blocking + ecore_main_loop_thread_safe_call_async + (remix_player_timer_add, player_data); + if (player_data->handle) return 0; player_data->old_buffer_size = player_data->buffer_size; -- 2.7.4