View | Details | Raw Unified | Return to bug 26823
Collapse All | Expand All

(-)a/lxsession/lxsession-logout/lxsession-logout.c (-6 / +6 lines)
Lines 75-81 typedef struct { Link Here
75
} HandlerContext;
75
} HandlerContext;
76
76
77
static gboolean lock_screen(void);
77
static gboolean lock_screen(void);
78
static gboolean verify_running(const char * display_manager, const char * executable);
78
static gboolean verify_running(const char * display_manager, const char * executable, const char * proc_dm);
79
static void logout_clicked(GtkButton * button, HandlerContext * handler_context);
79
static void logout_clicked(GtkButton * button, HandlerContext * handler_context);
80
static void change_root_property(GtkWidget* w, const char* prop_name, const char* value);
80
static void change_root_property(GtkWidget* w, const char* prop_name, const char* value);
81
static void shutdown_clicked(GtkButton * button, HandlerContext * handler_context);
81
static void shutdown_clicked(GtkButton * button, HandlerContext * handler_context);
Lines 101-107 static gboolean lock_screen(void) Link Here
101
}
101
}
102
102
103
/* Verify that a program is running and that an executable is available. */
103
/* Verify that a program is running and that an executable is available. */
104
static gboolean verify_running(const char * display_manager, const char * executable)
104
static gboolean verify_running(const char * display_manager, const char * executable, const char * proc_dm)
105
{
105
{
106
    /* See if the executable we need to run is in the path. */
106
    /* See if the executable we need to run is in the path. */
107
    gchar * full_path = g_find_program_in_path(executable);
107
    gchar * full_path = g_find_program_in_path(executable);
Lines 144-150 static gboolean verify_running(const char * display_manager, const char * execut Link Here
144
                            /* Null terminate the buffer and look for the display manager name in the command.
144
                            /* Null terminate the buffer and look for the display manager name in the command.
145
                             * If found, return success. */
145
                             * If found, return success. */
146
                            buffer[length] = '\0';
146
                            buffer[length] = '\0';
147
                            if (strstr(buffer, display_manager) != NULL)
147
                            if (strstr(buffer, proc_dm) != NULL)
148
                                return TRUE;
148
                                return TRUE;
149
                        }
149
                        }
150
                    }
150
                    }
Lines 436-456 int main(int argc, char * argv[]) Link Here
436
    }
436
    }
437
437
438
    /* If we are under GDM, its "Switch User" is available. */
438
    /* If we are under GDM, its "Switch User" is available. */
439
    if (verify_running("gdm", "gdmflexiserver"))
439
    if (verify_running("gdm", "gdmflexiserver", "gdm"))
440
    {
440
    {
441
        handler_context.switch_user_available = TRUE;
441
        handler_context.switch_user_available = TRUE;
442
        handler_context.switch_user_GDM = TRUE;
442
        handler_context.switch_user_GDM = TRUE;
443
    }
443
    }
444
444
445
    /* If we are under GDM3, its "Switch User" is available. */
445
    /* If we are under GDM3, its "Switch User" is available. */
446
    if (verify_running("gdm3", "gdmflexiserver"))
446
    if (verify_running("gdm3", "gdmflexiserver", "gdm3"))
447
    {
447
    {
448
        handler_context.switch_user_available = TRUE;
448
        handler_context.switch_user_available = TRUE;
449
        handler_context.switch_user_GDM = TRUE;
449
        handler_context.switch_user_GDM = TRUE;
450
    }
450
    }
451
451
452
    /* If we are under KDM, its "Switch User" is available. */
452
    /* If we are under KDM, its "Switch User" is available. */
453
    if (verify_running("kdm", "kdmctl"))
453
    if (verify_running("xdm", "kdmctl", "kdm"))
454
    {
454
    {
455
        handler_context.switch_user_available = TRUE;
455
        handler_context.switch_user_available = TRUE;
456
        handler_context.switch_user_KDM = TRUE;
456
        handler_context.switch_user_KDM = TRUE;

Return to bug 26823