subapp_handler subapp;
data_control_provider_handler dcp;
GList* clients;
+ GRecMutex init_mutex;
GRecMutex mutex;
GMainContext *tizen_context;
bool touch_argv_handler;
AUL_CTOR static void __aul_constructor(void)
{
- g_rec_mutex_init(&__context.mutex);
+ g_rec_mutex_init(&__context.init_mutex);
}
AUL_DTOR static void __aul_destructor(void)
{
- if (g_rec_mutex_trylock(&__context.mutex))
- g_rec_mutex_unlock(&__context.mutex);
+ if (g_rec_mutex_trylock(&__context.init_mutex))
+ g_rec_mutex_unlock(&__context.init_mutex);
- g_rec_mutex_clear(&__context.mutex);
+ g_rec_mutex_clear(&__context.init_mutex);
}
static void __destroy_client_channel(gpointer data)
static void __finalize_context(void)
{
- g_rec_mutex_lock(&__context.mutex);
+ g_rec_mutex_lock(&__context.init_mutex);
if (!__context.initialized) {
- g_rec_mutex_unlock(&__context.mutex);
+ g_rec_mutex_unlock(&__context.init_mutex);
return;
}
__context.clients = NULL;
}
+ if (g_rec_mutex_trylock(&__context.mutex))
+ g_rec_mutex_unlock(&__context.mutex);
+
+ g_rec_mutex_clear(&__context.mutex);
+
__context.initialized = false;
- g_rec_mutex_unlock(&__context.mutex);
+ g_rec_mutex_unlock(&__context.init_mutex);
}
static GMainContext *__get_tizen_glib_context(void)
return fd;
}
+ g_rec_mutex_init(&__context.mutex);
+
context = __get_tizen_glib_context();
if (context)
__context.tizen_context = g_main_context_ref(context);
{
int ret;
- g_rec_mutex_lock(&__context.mutex);
+ g_rec_mutex_lock(&__context.init_mutex);
if (callback) {
__context.aul.callback = callback;
__context.aul.user_data = user_data;
}
ret = __initialize_context();
- g_rec_mutex_unlock(&__context.mutex);
+ g_rec_mutex_unlock(&__context.init_mutex);
return ret;
}