Exemplo n.º 1
0
static void
gdm_display_dispose (GObject *object)
{
        GdmDisplay *display;

        display = GDM_DISPLAY (object);

        g_debug ("GdmDisplay: Disposing display");

        if (display->priv->finish_idle_id > 0) {
                g_source_remove (display->priv->finish_idle_id);
                display->priv->finish_idle_id = 0;
        }

        if (display->priv->slave_proxy != NULL) {
                g_object_unref (display->priv->slave_proxy);
                display->priv->slave_proxy = NULL;
        }

        if (display->priv->user_access_file != NULL) {
                gdm_display_access_file_close (display->priv->user_access_file);
                g_object_unref (display->priv->user_access_file);
                display->priv->user_access_file = NULL;
        }

        if (display->priv->access_file != NULL) {
                gdm_display_access_file_close (display->priv->access_file);
                g_object_unref (display->priv->access_file);
                display->priv->access_file = NULL;
        }

        G_OBJECT_CLASS (gdm_display_parent_class)->dispose (object);
}
Exemplo n.º 2
0
static gboolean
gdm_display_real_unmanage (GdmDisplay *display)
{
    gdouble elapsed;

    g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);

    g_debug ("GdmDisplay: unmanage display");

    g_timer_stop (display->priv->slave_timer);

    if (display->priv->slave_proxy != NULL) {
        gdm_slave_proxy_stop (display->priv->slave_proxy);

        g_object_unref (display->priv->slave_proxy);
        display->priv->slave_proxy = NULL;
    }

    if (display->priv->user_access_file != NULL) {
        gdm_display_access_file_close (display->priv->user_access_file);
        g_object_unref (display->priv->user_access_file);
        display->priv->user_access_file = NULL;
    }

    if (display->priv->access_file != NULL) {
        gdm_display_access_file_close (display->priv->access_file);
        g_object_unref (display->priv->access_file);
        display->priv->access_file = NULL;
    }

    elapsed = g_timer_elapsed (display->priv->slave_timer, NULL);
    if (elapsed < 3) {
        g_warning ("GdmDisplay: display lasted %lf seconds", elapsed);
        _gdm_display_set_status (display, GDM_DISPLAY_FAILED);
    } else {
        _gdm_display_set_status (display, GDM_DISPLAY_UNMANAGED);
    }

    if (display->priv->slave_name_id > 0) {
        g_bus_unwatch_name (display->priv->slave_name_id);
        display->priv->slave_name_id = 0;
    }

    return TRUE;
}
Exemplo n.º 3
0
static gboolean
gdm_display_real_remove_user_authorization (GdmDisplay *display,
        const char *username,
        GError    **error)
{
    gdm_display_access_file_close (display->priv->user_access_file);

    return TRUE;
}
Exemplo n.º 4
0
static gboolean
gdm_display_real_add_user_authorization (GdmDisplay *display,
        const char *username,
        char      **filename,
        GError    **error)
{
    GdmDisplayAccessFile *access_file;
    GError               *access_file_error;
    gboolean              res;

    g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
    g_return_val_if_fail (display->priv->access_file != NULL, FALSE);

    g_debug ("GdmDisplay: Adding user authorization for %s", username);

    access_file_error = NULL;
    access_file = _create_access_file_for_user (display,
                  username,
                  &access_file_error);

    if (access_file == NULL) {
        g_propagate_error (error, access_file_error);
        return FALSE;
    }

    res = gdm_display_access_file_add_display_with_cookie (access_file,
            display,
            display->priv->x11_cookie,
            display->priv->x11_cookie_size,
            &access_file_error);
    if (! res) {
        g_debug ("GdmDisplay: Unable to add user authorization for %s: %s",
                 username,
                 access_file_error->message);
        g_propagate_error (error, access_file_error);
        gdm_display_access_file_close (access_file);
        g_object_unref (access_file);
        return FALSE;
    }

    *filename = gdm_display_access_file_get_path (access_file);
    display->priv->user_access_file = access_file;

    g_debug ("GdmDisplay: Added user authorization for %s: %s", username, *filename);

    return TRUE;
}
Exemplo n.º 5
0
static gboolean
gdm_display_real_create_authority (GdmDisplay *display)
{
    GdmDisplayAccessFile *access_file;
    GError               *error;
    gboolean              res;

    g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
    g_return_val_if_fail (display->priv->access_file == NULL, FALSE);

    error = NULL;
    access_file = _create_access_file_for_user (display, GDM_USERNAME, &error);

    if (access_file == NULL) {
        g_critical ("could not create display access file: %s", error->message);
        g_error_free (error);
        return FALSE;
    }

    g_free (display->priv->x11_cookie);
    display->priv->x11_cookie = NULL;
    res = gdm_display_access_file_add_display (access_file,
            display,
            &display->priv->x11_cookie,
            &display->priv->x11_cookie_size,
            &error);

    if (! res) {

        g_critical ("could not add display to access file: %s", error->message);
        g_error_free (error);
        gdm_display_access_file_close (access_file);
        g_object_unref (access_file);
        return FALSE;
    }

    display->priv->access_file = access_file;

    return TRUE;
}