}
}
+static void add_poweroff_wait_cb(GVariant *var, void *user_data, GError *err)
+{
+ int ret_val = -ENOMSG;
+
+ if (!var)
+ return ;
+
+ if (!g_variant_get_safe(var, "(i)", &ret_val))
+ _E("Failed to get(%s): no message", g_variant_get_type_string(var));
+
+ if (ret_val >= 0)
+ add_poweroff_wait = true;
+
+ g_variant_unref(var);
+}
+
static void booting_done(void)
{
static int done = 0;
/* if there is the attached device, try to mount */
block_init_from_udev_enumerate();
- ret = dbus_handle_method_sync(DEVICED_BUS_NAME,
+ ret = dbus_handle_method_async_with_reply(DEVICED_BUS_NAME,
DEVICED_PATH_POWEROFF,
DEVICED_INTERFACE_POWEROFF,
METHOD_ADD_POWEROFF_WAIT,
- NULL, NULL);
+ NULL, NULL,
+ add_poweroff_wait_cb,
+ -1, NULL);
if (ret < 0)
_E("Failed to call "METHOD_ADD_POWEROFF_WAIT" method.");
- else
- add_poweroff_wait = true;
block_boot = true;
}