static void on_driver_registered (GsdSmartcardManager *self, GAsyncResult *result, GTask *task) { GError *error = NULL; DriverRegistrationOperation *operation; GsdSmartcardManagerPrivate *priv = self->priv; operation = g_task_get_task_data (G_TASK (result)); if (!register_driver_finish (self, result, &error)) { g_task_return_error (task, error); g_object_unref (task); return; } watch_smartcards_from_driver_async (self, operation->driver, priv->cancellable, (GAsyncReadyCallback) on_smartcards_from_driver_watched, task); g_task_return_boolean (task, TRUE); g_object_unref (task); }
static void activate_driver (GsdSmartcardManager *self, SECMODModule *driver, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task; g_debug ("Activating driver '%s'", driver->commonName); task = g_task_new (self, cancellable, callback, user_data); register_driver (self, driver, cancellable, (GAsyncReadyCallback) on_driver_registered, task); watch_smartcards_from_driver_async (self, driver, cancellable, (GAsyncReadyCallback) on_smartcards_from_driver_watched, task); }