int _mm_resource_manager_backend_deinit()
{
+ int ret;
+
MM_RM_RETVM_IF(mrp == NULL,
MM_RESOURCE_MANAGER_ERROR_INVALID_PARAMETER, "mloop is NULL");
- return _mm_resource_manager_mloop_destroy(mrp);
+
+ ret = _mm_resource_manager_mloop_destroy(mrp);
+ mrp = NULL;
+
+ return ret;
}
int _mm_resource_manager_backend_acquire(mm_resource_manager_res_type_e type)
static GMainLoop *main_loop;
-static gboolean init_failed = FALSE;
static gboolean restart = FALSE;
int notify_fd;
if (pid != 0) {
close(fds[1]);
-
/* Read in a string from the pipe */
MM_RM_RETVM_IF(read(fds[0], msg, sizeof(msg)) < 0,
FALSE, "Failed to create pipe to get child status");
static gboolean init_event(gpointer user_data)
{
MM_RM_DEBUG("main loop = %p", main_loop);
- init_failed = !_mmrm_dmn_init();
- if (init_failed)
+ if (!_mmrm_dmn_init())
g_main_loop_quit(main_loop);
return G_SOURCE_REMOVE;
static void daemon_loop()
{
+ guint id = 0;
+
do {
restart = FALSE;
- MM_RM_RETM_IF(g_timeout_add(0, init_event, NULL) <= 0,
- "Init event cannot be added to main loop");
-
- if (!mm_resource_manager_reload_conf())
- return;
+ MM_RM_RETM_IF(!mm_resource_manager_reload_conf(),
+ "Daemon cannot reload conf");
main_loop = g_main_loop_new(NULL, FALSE);
MM_RM_RETM_IF(main_loop == NULL, "Daemon cannot create main loop");
+ if ((id = g_timeout_add(100, init_event, NULL)) == 0) {
+ MM_RM_ERROR("Init event cannot be added to main loop");
+ goto end;
+ }
+
MM_RM_INFO("Daemon loop [%p] is ran", main_loop);
g_main_loop_run(main_loop);
MM_RM_INFO("Daemon loop end");
- if (!init_failed)
- _mmrm_dmn_deinit();
+end:
+ _mmrm_dmn_deinit();
g_main_loop_unref(main_loop);
main_loop = NULL;
+
+ MM_RM_RETM_IF(g_source_remove(id) == FALSE, "Failed to remove %d", id);
} while (restart);
}
MM_RESOURCE_MANAGER_ERROR_INVALID_OPERATION,
"Dbus proxy is not NULL");
-#if !GLIB_CHECK_VERSION(2, 35, 0)
- g_type_init();
-#endif
-
g_main_context_push_thread_default(handle->dispatcher_context);
handle->dbus_proxy = mmresource_manager_proxy_new_for_bus_sync(
- G_BUS_TYPE_SYSTEM, 0, RMD_GDBUS_NAME, RMD_GDBUS_PATH, NULL , &error);
+ G_BUS_TYPE_SYSTEM, 0, RMD_GDBUS_NAME, RMD_GDBUS_PATH, NULL, &error);
g_main_context_pop_thread_default(handle->dispatcher_context);
MM_RM_RET_IF_GERR(error, "Dbus proxy cannot be created");