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;