static GMainLoop *g_mc_svc_mainloop = NULL;
static int g_connection_cnt = -1;
static GList *g_connected_apps;
+static GSource *g_source;
typedef struct {
int client_sock;
typedef struct {
GQueue *queue;
- GSource *source;
} mc_manage_queue_t;
typedef struct {
g_queue_free_full(data->queue, __mc_destroy_queue);
data->queue = NULL;
- g_source_unref(data->source);
- data->source = NULL;
-
g_free(data);
}
if (length_of_queue == 0) {
mc_debug("There is no request job in the queue");
- g_source_unref(_service_data->request->source);
- _service_data->request->source = NULL;
+ g_source = NULL;
return G_SOURCE_REMOVE;
}
mc_info("msg(%d) is queued", req->req_msg->msg_type);
g_queue_push_tail(request_queue, (gpointer)req);
- /* push received message to queue */
- if (!_service_data->request->source) {
- _service_data->request->source = g_idle_source_new();
- g_source_set_callback(_service_data->request->source, __mc_service_process, _service_data, NULL);
- g_source_attach(_service_data->request->source, g_main_context_get_thread_default());
+ if (!g_source) {
+ g_source = g_idle_source_new();
+ g_source_set_callback(g_source, __mc_service_process, _service_data, NULL);
+ g_source_attach(g_source, g_main_context_get_thread_default());
+ g_source_unref(g_source);
}
MC_SAFE_FREE(creds.uid);
mc_error("Failed to unregister app_dead signal");
__mc_service_deinit(mc_service_data);
+
+ if (g_source) {
+ g_source_destroy(g_source);
+ g_source = NULL;
+ }
+
__mc_clean_connected_apps();
/* Free resources */