示例#1
0
LightDMSession*
find_session_by_key(const gchar *key)
{
    LightDMSession *ret = NULL;
    guint i;

    if (sessions == NULL) {
        sessions = lightdm_get_sessions ();
    }

    for (i = 0; i < g_list_length (sessions); i++) {
        LightDMSession *session = (LightDMSession *)g_list_nth_data(sessions,
                                                                    i);

        if (session != NULL) {
            gchar *session_key = g_strdup(lightdm_session_get_key(session));
            if (g_strcmp0 (key, session_key) == 0) {
                ret = session;
            } else {
                continue;
            }
            g_free (session_key);

        } else {
            continue;
        }
    }

    return ret;
}
示例#2
0
JS_EXPORT_API
JSObjectRef greeter_get_sessions ()
{
    JSObjectRef array = json_array_create ();

    guint i;

    if (sessions == NULL) {
        sessions = lightdm_get_sessions ();
    }

    for (i = 0; i < g_list_length (sessions); ++i) {
        gchar *key = NULL;
        LightDMSession *session = (LightDMSession *)g_list_nth_data(sessions,
                                                                    i);

        key = g_strdup (lightdm_session_get_key (session));
        json_array_insert(array, i, jsvalue_from_cstr(get_global_context(),
                                                      g_strdup(key)));

        g_free (key);
    }

    return array;
}
示例#3
0
JS_EXPORT_API
gchar* greeter_get_default_session ()
{
    gchar *key = NULL;

    extern LightDMGreeter *greeter;
    guint i;

    gchar* session_name = g_strdup(
        lightdm_greeter_get_default_session_hint(greeter));
    if (session_name != NULL) {
        if (sessions == NULL) {
            sessions = lightdm_get_sessions ();
        }

        for (i = 0; i < g_list_length (sessions); ++i) {
            LightDMSession *session = (LightDMSession *)g_list_nth_data(
                sessions, i);
            gchar *name = g_strdup (lightdm_session_get_name (session));

            if (g_strcmp0 (session_name, name) == 0) {
                key = g_strdup (lightdm_session_get_key (session));
                g_free (name);
                break;

            } else {
                g_free (name);
                continue;
            }
        }
    }
    g_free (session_name);

    return key;
}
static JSValueRef
get_sessions_cb(JSContextRef context,
				JSObjectRef thisObject,
				JSStringRef propertyName,
				JSValueRef *exception) {

	JSObjectRef array;
	const GList *sessions, *link;
	guint i, n_sessions = 0;
	JSValueRef *args;

	sessions = lightdm_get_sessions();
	n_sessions = g_list_length((GList *) sessions);
	args = g_malloc(sizeof(JSValueRef) * ( n_sessions + 1 ));

	for (i = 0, link = sessions; link; i++, link = link->next) {
		LightDMSession *session = link->data;
		g_object_ref(session);

		args[i] = JSObjectMake(context, lightdm_session_class, session);
	}

	array = JSObjectMakeArray(context, n_sessions, args, exception);
	g_free(args);

	if (array == NULL) {
		return JSValueMakeNull(context);
	} else {
		return array;
	}
}