static gboolean on_invoke_ask_password_async_as_sync (gpointer user_data) { InvokeClosure *closure = user_data; GTlsInteractionClass *klass; g_mutex_lock (closure->mutex); klass = G_TLS_INTERACTION_GET_CLASS (closure->interaction); g_assert (klass->ask_password_async); klass->ask_password_async (closure->interaction, G_TLS_PASSWORD (closure->argument), closure->cancellable, on_async_as_sync_complete, closure); /* Note that we've used these */ closure->callback = NULL; closure->user_data = NULL; g_mutex_unlock (closure->mutex); return FALSE; /* don't call again */ }
static void g_tls_password_finalize (GObject *object) { GTlsPassword *password = G_TLS_PASSWORD (object); g_tls_password_real_set_value (password, NULL, 0, NULL); g_free (password->priv->warning); g_free (password->priv->description); G_OBJECT_CLASS (g_tls_password_parent_class)->finalize (object); }
static gboolean on_invoke_ask_password_sync (gpointer user_data) { InvokeClosure *closure = user_data; GTlsInteractionClass *klass; g_mutex_lock (closure->mutex); klass = G_TLS_INTERACTION_GET_CLASS (closure->interaction); g_assert (klass->ask_password); closure->result = klass->ask_password (closure->interaction, G_TLS_PASSWORD (closure->argument), closure->cancellable, &closure->error); closure->complete = TRUE; g_cond_signal (closure->cond); g_mutex_unlock (closure->mutex); return FALSE; /* don't call again */ }
static void g_tls_password_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GTlsPassword *password = G_TLS_PASSWORD (object); switch (prop_id) { case PROP_FLAGS: g_tls_password_set_flags (password, g_value_get_flags (value)); break; case PROP_WARNING: g_tls_password_set_warning (password, g_value_get_string (value)); break; case PROP_DESCRIPTION: g_tls_password_set_description (password, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }