static GMainContext *event_thread_context;
static oal_event_callback event_handler_cb;
+GMainLoop *event_loop;
+
+void _bt_event_dispatcher_deinit()
+{
+ BT_DBG("+");
+ if (event_loop) {
+ BT_DBG("OAL event loop guit");
+ g_main_loop_quit(event_loop);
+ }
+
+ BT_DBG("-");
+}
static gpointer __event_handler_loop(gpointer user_data)
{
gboolean ret = FALSE;
- GMainLoop *event_loop;
/* Set up the thread�s context and run it forever. */
g_main_context_push_thread_default(event_thread_context);
} while (ret == FALSE);
g_main_loop_run(event_loop);
- g_main_loop_unref(event_loop);
+ BT_DBG("OAL event loop quited");
+
+ if (event_loop) {
+ g_main_loop_unref(event_loop);
+ event_loop = NULL;
+ }
g_main_context_pop_thread_default(event_thread_context);
g_main_context_unref(event_thread_context);
#define _bt_dispatch_event send_event
void send_event(oal_event_t event, gpointer event_data, gsize len);
void _bt_event_dispatcher_init(oal_event_callback cb);
+void _bt_event_dispatcher_deinit(void);
#ifdef __cplusplus
}