static gpointer _cal_server_alarm_main(gpointer user_data)
{
+ DBG("thread alarm: start");
+
int ret = 0;
bool is_initialized = false;
break;
/* LCOV_EXCL_STOP */
}
- DBG("init alarm");
+ DBG("thread alarm: init");
is_initialized = true;
}
cal_server_ondemand_release();
cal_server_ondemand_start();
+ DBG("thread alarm: wait");
while (false == signal_called)
g_cond_wait(&_cal_server_alarm_cond, &_cal_server_alarm_mutex);
signal_called = false;
if (server_killed)
break;
}
- DBG("end alarm thread");
+ DBG("thread alarm: end");
g_thread_exit(NULL);
return NULL;
GCond _cal_server_cleanup_cond;
GMutex _cal_server_cleanup_mutex;
static bool server_killed = false;
+static bool signal_called = false;
static int cal_server_calendar_get_count(int *out_count)
{
return CALENDAR_ERROR_NONE;
}
-static void cal_server_calendar_clean_book(int in_count)
+static void cal_server_cleanup_book(int in_count)
{
int ret = 0;
char query[CAL_DB_SQL_MIN_LEN] = {0};
}
}
-static gpointer _cal_server_calendar_main(gpointer user_data)
+static gpointer _cal_server_cleanup_main(gpointer user_data)
{
+ DBG("thread cleanup: start");
+
int ret = 0;
- CAL_FN_CALL();
while (1) {
+ g_mutex_lock(&_cal_server_cleanup_mutex);
/*
* While syncing with contacts,
* because calendar-service could be stopped by on-demand,
ret = cal_server_calendar_get_count(&deleted_count);
if (CALENDAR_ERROR_NONE != ret)
break;
- cal_server_calendar_clean_book(deleted_count);
+ cal_server_cleanup_book(deleted_count);
} while (0);
cal_disconnect();
} while (0);
- g_mutex_lock(&_cal_server_cleanup_mutex);
- DBG("wait");
cal_server_ondemand_release();
cal_server_ondemand_start();
- g_cond_wait(&_cal_server_cleanup_cond, &_cal_server_cleanup_mutex);
+
+ DBG("thread cleanup: wait");
+ while (false == signal_called)
+ g_cond_wait(&_cal_server_cleanup_cond, &_cal_server_cleanup_mutex);
+ signal_called = false;
g_mutex_unlock(&_cal_server_cleanup_mutex);
+
if (server_killed)
break;
}
+ DBG("thread cleanup: end");
g_thread_exit(NULL);
return NULL;
}
+void cal_server_cleanup_send_signal(void)
+{
+ g_mutex_lock(&_cal_server_cleanup_mutex);
+ signal_called = true;
+ g_cond_signal(&_cal_server_cleanup_cond);
+ g_mutex_unlock(&_cal_server_cleanup_mutex);
+}
+
void cal_server_cleanup_start(void)
{
CAL_FN_CALL();
g_mutex_init(&_cal_server_cleanup_mutex);
g_cond_init(&_cal_server_cleanup_cond);
_cal_server_cleanup_thread = g_thread_new(CAL_SERVER_CLEANUP_THREAD_NAME,
- _cal_server_calendar_main, NULL);
+ _cal_server_cleanup_main, NULL);
}
- /* don't use mutex. */
- g_cond_signal(&_cal_server_cleanup_cond);
+ cal_server_cleanup_send_signal();
}
void cal_server_cleanup_end(void)
{
server_killed = true;
- /* don't use mutex. */
- g_cond_signal(&_cal_server_cleanup_cond);
+
+ cal_server_cleanup_send_signal();
+
+ g_cond_clear(&_cal_server_cleanup_cond);
g_thread_join(_cal_server_cleanup_thread);
g_thread_unref(_cal_server_cleanup_thread);
+ _cal_server_cleanup_thread = NULL;
}
static gpointer _cal_server_contacts_main(gpointer user_data)
{
+ DBG("thread contacts: start");
+
int ret = 0;
bool is_init_contacts = false;
break;
/* LCOV_EXCL_STOP */
}
- DBG("init contacts");
+ DBG("thread contacts: init");
is_init_contacts = true;
}
cal_server_ondemand_release();
cal_server_ondemand_start();
+ DBG("thread contacts: wait");
while (false == signal_called)
g_cond_wait(&_cal_server_contacts_cond, &_cal_server_contacts_mutex);
signal_called = false;
if (server_killed)
break;
}
- DBG("end contacts thread");
+ DBG("thread contacts: end");
g_thread_exit(NULL);
return NULL;