SHA256
1
0
forked from pool/gdm
OBS User unknown 2009-02-06 22:36:06 +00:00 committed by Git OBS Bridge
parent adc7f6d78a
commit 746b392acc
22 changed files with 967 additions and 1250 deletions

View File

@ -1,39 +0,0 @@
--- gdm/gui/simple-greeter/gdm-languages.c (revision 6468)
+++ gdm/gui/simple-greeter/gdm-languages.c (working copy)
@@ -216,6 +216,25 @@ construct_language_name (const char *lan
return name;
}
+static void
+make_codeset_canonical_for_locale (const *name,
+ const char **codeset)
+{
+ char *old_locale;
+ char *canonical_codeset;
+
+ old_locale = setlocale (LC_CTYPE, name);
+
+ if (old_locale == NULL) {
+ return;
+ }
+
+ g_free (*codeset);
+ *codeset = g_strdup (nl_langinfo (CODESET));
+
+ setlocale (LC_CTYPE, old_locale);
+}
+
char *
gdm_normalize_language_name (const char *name)
{
@@ -234,6 +253,10 @@ gdm_normalize_language_name (const char
&territory_code,
&codeset, &modifier);
+ if (codeset != NULL) {
+ make_codeset_canonical_for_locale (name, &codeset);
+ }
+
normalized_name = construct_language_name (language_code,
territory_code,
codeset, modifier);

View File

@ -1,138 +0,0 @@
diff -up gdm-2.23.92/gui/simple-greeter/gdm-language-option-widget.c.filter-dupes-from-lang-list gdm-2.23.92/gui/simple-greeter/gdm-language-option-widget.c
--- gdm-2.23.92/gui/simple-greeter/gdm-language-option-widget.c.filter-dupes-from-lang-list 2008-08-26 15:04:00.000000000 -0400
+++ gdm-2.23.92/gui/simple-greeter/gdm-language-option-widget.c 2008-09-17 11:07:51.000000000 -0400
@@ -173,7 +173,7 @@ gdm_language_option_widget_class_init (G
g_type_class_add_private (klass, sizeof (GdmLanguageOptionWidgetPrivate));
}
-static gboolean
+static char *
gdm_language_option_widget_lookup_item (GdmRecentOptionWidget *widget,
const char *locale,
char **name,
@@ -182,11 +182,15 @@ gdm_language_option_widget_lookup_item (
char *language;
char *readable_language;
char *lang_tag;
+ char *normalized_locale;
- language = gdm_get_language_from_name (locale, locale);
+ normalized_locale = gdm_normalize_language_name (locale);
+
+ language = gdm_get_language_from_name (locale, normalized_locale);
if (language == NULL) {
- return FALSE;
+ g_free (normalized_locale);
+ return NULL;
}
readable_language = gdm_get_language_from_name (locale, NULL);
@@ -197,7 +201,7 @@ gdm_language_option_widget_lookup_item (
g_free (language);
g_free (lang_tag);
- return TRUE;
+ return normalized_locale;
}
static void
@@ -294,7 +298,7 @@ gdm_language_option_widget_set_current_l
if (normalized_language_name != NULL &&
!gdm_option_widget_lookup_item (GDM_OPTION_WIDGET (widget),
- normalized_language_name, NULL, NULL, NULL)) {
+ &normalized_language_name, NULL, NULL, NULL)) {
gdm_recent_option_widget_add_item (GDM_RECENT_OPTION_WIDGET (widget),
normalized_language_name);
}
diff -up gdm-2.23.92/gui/simple-greeter/gdm-layout-option-widget.c.filter-dupes-from-lang-list gdm-2.23.92/gui/simple-greeter/gdm-layout-option-widget.c
--- gdm-2.23.92/gui/simple-greeter/gdm-layout-option-widget.c.filter-dupes-from-lang-list 2008-09-17 10:55:20.000000000 -0400
+++ gdm-2.23.92/gui/simple-greeter/gdm-layout-option-widget.c 2008-09-17 11:08:07.000000000 -0400
@@ -176,24 +176,24 @@ gdm_layout_option_widget_class_init (Gdm
g_type_class_add_private (klass, sizeof (GdmLayoutOptionWidgetPrivate));
}
-static gboolean
+static char *
gdm_layout_option_widget_lookup_item (GdmRecentOptionWidget *widget,
- const char *id,
+ const char *key,
char **name,
char **comment)
{
char *layout;
- layout = gdm_get_layout_from_name (id);
+ layout = gdm_get_layout_from_name (key);
if (layout == NULL) {
- return FALSE;
+ return NULL;
}
*name = layout;
*comment = NULL;
- return TRUE;
+ return g_strdup (key);
}
static void
diff -up gdm-2.23.92/gui/simple-greeter/gdm-recent-option-widget.c.filter-dupes-from-lang-list gdm-2.23.92/gui/simple-greeter/gdm-recent-option-widget.c
--- gdm-2.23.92/gui/simple-greeter/gdm-recent-option-widget.c.filter-dupes-from-lang-list 2008-08-26 15:04:00.000000000 -0400
+++ gdm-2.23.92/gui/simple-greeter/gdm-recent-option-widget.c 2008-09-17 11:06:34.000000000 -0400
@@ -159,13 +159,24 @@ gdm_recent_option_widget_sync_items_from
default_is_set = FALSE;
for (tmp = list; tmp != NULL; tmp = tmp->next) {
- const char *id;
+ const char *key;
+ char *id;
char *name;
char *comment;
- id = (char *) tmp->data;
+ key = (char *) tmp->data;
+
+ id = widget->priv->lookup_item_func (widget, key, &name, &comment);
+
+ if (id != NULL) {
+ gboolean item_exists;
+
+ item_exists = gdm_option_widget_lookup_item (GDM_OPTION_WIDGET (widget), id, NULL, NULL, NULL);
+
+ if (item_exists) {
+ continue;
+ }
- if (widget->priv->lookup_item_func (widget, id, &name, &comment)) {
gdm_option_widget_add_item (GDM_OPTION_WIDGET (widget),
id, name, comment,
GDM_OPTION_WIDGET_POSITION_MIDDLE);
@@ -177,6 +188,7 @@ gdm_recent_option_widget_sync_items_from
g_free (name);
g_free (comment);
+ g_free (id);
}
}
diff -up gdm-2.23.92/gui/simple-greeter/gdm-recent-option-widget.h.filter-dupes-from-lang-list gdm-2.23.92/gui/simple-greeter/gdm-recent-option-widget.h
--- gdm-2.23.92/gui/simple-greeter/gdm-recent-option-widget.h.filter-dupes-from-lang-list 2008-08-26 15:04:00.000000000 -0400
+++ gdm-2.23.92/gui/simple-greeter/gdm-recent-option-widget.h 2008-09-17 11:07:40.000000000 -0400
@@ -48,10 +48,10 @@ typedef struct
GdmOptionWidgetClass parent_class;
} GdmRecentOptionWidgetClass;
-typedef gboolean (* GdmRecentOptionLookupItemFunc) (GdmRecentOptionWidget *widget,
- const char *id,
- char **name,
- char **comment);
+typedef char * (* GdmRecentOptionLookupItemFunc) (GdmRecentOptionWidget *widget,
+ const char *key,
+ char **name,
+ char **comment);
GType gdm_recent_option_widget_get_type (void);

View File

@ -1,12 +0,0 @@
--- gdm-2.23.92/gui/simple-greeter/gdm-option-widget.c 2008-08-26 15:03:59.000000000 -0400
+++ foo/gui/simple-greeter/gdm-option-widget.c 2008-09-19 09:57:30.000000000 -0400
@@ -148,7 +148,8 @@
model = GTK_TREE_MODEL (widget->priv->list_store);
item_id = NULL;
- if (widget->priv->active_row == NULL) {
+ if (widget->priv->active_row == NULL ||
+ !gtk_tree_row_reference_valid (widget->priv->active_row)) {
return NULL;
}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f47553b89ff6ba5c03e53d82a64a63b97fcb2d751cbd4e1591c6499ac9a694f7
size 2559374

3
gdm-2.25.2.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d2ee2c552282aa56b4e2c0797052b33a44b5d7bba6f203f44b2c9eaa17e1ba19
size 2616227

View File

@ -0,0 +1,55 @@
Index: gdm-2.24.0/daemon/gdm-session-direct.c
===================================================================
--- gdm-2.24.0.orig/daemon/gdm-session-direct.c
+++ gdm-2.24.0/daemon/gdm-session-direct.c
@@ -442,6 +442,7 @@ gdm_session_direct_handle_accreditation_
DBusError error;
const char *text;
+ text = NULL;
dbus_error_init (&error);
if (! dbus_message_get_args (message, &error,
DBUS_TYPE_STRING, &text,
@@ -455,7 +456,7 @@ gdm_session_direct_handle_accreditation_
g_debug ("GdmSessionDirect: Emitting 'accreditation-failed' signal");
- _gdm_session_accreditation_failed (GDM_SESSION (session), NULL);
+ _gdm_session_accreditation_failed (GDM_SESSION (session), text);
return DBUS_HANDLER_RESULT_HANDLED;
}
Index: gdm-2.24.0/daemon/gdm-simple-slave.c
===================================================================
--- gdm-2.24.0.orig/daemon/gdm-simple-slave.c
+++ gdm-2.24.0/daemon/gdm-simple-slave.c
@@ -422,8 +422,15 @@ on_session_accreditation_failed (GdmSess
accreditation fails */
if (! migrated) {
if (slave->priv->greeter_server != NULL) {
+ char *problem;
+ if (message) {
+ problem = g_strdup_printf (_("Unable to establish credentials: %s"), message);
+ } else {
+ problem = g_strdup (_("Unable to establish credentials"));
+ }
gdm_greeter_server_problem (slave->priv->greeter_server,
- _("Unable establish credentials"));
+ problem);
+ g_free (problem);
}
}
Index: gdm-2.24.0/daemon/gdm-session-worker.c
===================================================================
--- gdm-2.24.0.orig/daemon/gdm-session-worker.c
+++ gdm-2.24.0/daemon/gdm-session-worker.c
@@ -2414,7 +2414,7 @@ on_setup (GdmSessionWorker *worker,
worker->priv->hostname = g_strdup (hostname);
worker->priv->username = NULL;
- g_debug ("GdmSessionWorker: queing setup: %s %s", service, console);
+ g_debug ("GdmSessionWorker: queuing setup: %s %s", service, console);
queue_state_change (worker);
} else {
g_warning ("Unable to get arguments: %s", error.message);

View File

@ -1,748 +0,0 @@
2008-10-23 William Jon McCann <jmccann@redhat.com>
* daemon/gdm-display.c (gdm_display_real_get_timed_login_details),
(gdm_display_get_timed_login_details), (gdm_display_real_unmanage),
(gdm_display_class_init):
* daemon/gdm-display.h:
* daemon/gdm-display.xml:
* daemon/gdm-simple-slave.c (greeter_reset_timeout),
(on_session_setup_failed), (on_session_authentication_failed),
(on_session_authorized), (on_session_authorization_failed),
(stop_greeter), (start_session_timeout), (on_session_accredited),
(on_session_accreditation_failed), (on_session_info),
(on_session_opened), (on_session_selected_user_changed),
(on_default_language_name_changed),
(on_default_layout_name_changed),
(on_default_session_name_changed), (start_greeter),
(idle_connect_to_display), (gdm_simple_slave_stop):
* daemon/gdm-slave.c (gdm_slave_get_timed_login_details):
* daemon/gdm-slave.h:
* daemon/gdm-static-display.c (gdm_static_display_unmanage),
(gdm_static_display_get_timed_login_details),
(gdm_static_display_class_init), (gdm_static_display_init):
* daemon/gdm-transient-display.c
(gdm_transient_display_get_timed_login_details),
(gdm_transient_display_class_init):
* daemon/gdm-xdmcp-display.c
(gdm_xdmcp_display_get_timed_login_details),
(gdm_xdmcp_display_class_init):
Add support for a real automatic login. Make
automatic and timed login only work the first time a display
is managed. Also prevent automatic and timed login
from working on transient and xdmcp displays.
2008-10-22 William Jon McCann <jmccann@redhat.com>
* gui/user-switch-applet/gdm-entry-menu-item.c
Index: daemon/gdm-xdmcp-display.c
===================================================================
--- daemon/gdm-xdmcp-display.c (revision 6581)
+++ daemon/gdm-xdmcp-display.c (revision 6582)
@@ -182,6 +182,17 @@
}
static void
+gdm_xdmcp_display_get_timed_login_details (GdmDisplay *display,
+ gboolean *enabledp,
+ char **usernamep,
+ int *delayp)
+{
+ *enabledp = FALSE;
+ *usernamep = g_strdup ("");
+ *delayp = 0;
+}
+
+static void
gdm_xdmcp_display_class_init (GdmXdmcpDisplayClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -196,6 +207,7 @@
display_class->remove_user_authorization = gdm_xdmcp_display_remove_user_authorization;
display_class->manage = gdm_xdmcp_display_manage;
display_class->unmanage = gdm_xdmcp_display_unmanage;
+ display_class->get_timed_login_details = gdm_xdmcp_display_get_timed_login_details;
g_type_class_add_private (klass, sizeof (GdmXdmcpDisplayPrivate));
Index: daemon/gdm-display.xml
===================================================================
--- daemon/gdm-display.xml (revision 6581)
+++ daemon/gdm-display.xml (revision 6582)
@@ -35,5 +35,10 @@
<method name="SetSlaveBusName">
<arg name="name" direction="in" type="s"/>
</method>
+ <method name="GetTimedLoginDetails">
+ <arg name="enabled" direction="out" type="b"/>
+ <arg name="username" direction="out" type="s"/>
+ <arg name="delay" direction="out" type="i"/>
+ </method>
</interface>
</node>
Index: daemon/gdm-slave.c
===================================================================
--- daemon/gdm-slave.c (revision 6581)
+++ daemon/gdm-slave.c (revision 6582)
@@ -701,6 +701,60 @@
return res;
}
+gboolean
+gdm_slave_get_timed_login_details (GdmSlave *slave,
+ gboolean *enabledp,
+ char **usernamep,
+ int *delayp)
+{
+ GError *error;
+ gboolean res;
+ gboolean enabled;
+ char *username;
+ int delay;
+
+ username = NULL;
+ enabled = FALSE;
+ delay = 0;
+
+ g_debug ("GdmSlave: Requesting timed login details");
+
+ error = NULL;
+ res = dbus_g_proxy_call (slave->priv->display_proxy,
+ "GetTimedLoginDetails",
+ &error,
+ G_TYPE_INVALID,
+ G_TYPE_BOOLEAN, &enabled,
+ G_TYPE_STRING, &username,
+ G_TYPE_INT, &delay,
+ G_TYPE_INVALID);
+
+ if (! res) {
+ if (error != NULL) {
+ g_warning ("Failed to get timed login details: %s", error->message);
+ g_error_free (error);
+ } else {
+ g_warning ("Failed to get timed login details");
+ }
+ } else {
+ g_debug ("GdmSlave: Got timed login details: %d %s %d", enabled, username, delay);
+ }
+
+ if (usernamep != NULL) {
+ *usernamep = username;
+ } else {
+ g_free (username);
+ }
+ if (enabledp != NULL) {
+ *enabledp = enabled;
+ }
+ if (delayp != NULL) {
+ *delayp = delay;
+ }
+
+ return res;
+}
+
static gboolean
_get_uid_and_gid_for_user (const char *username,
uid_t *uid,
Index: daemon/gdm-slave.h
===================================================================
--- daemon/gdm-slave.h (revision 6581)
+++ daemon/gdm-slave.h (revision 6582)
@@ -60,6 +60,11 @@
char * gdm_slave_get_primary_session_id_for_user (GdmSlave *slave,
const char *username);
+gboolean gdm_slave_get_timed_login_details (GdmSlave *slave,
+ gboolean *enabled,
+ char **username,
+ int *delay);
+
gboolean gdm_slave_add_user_authorization (GdmSlave *slave,
const char *username,
char **filename);
Index: daemon/gdm-display.c
===================================================================
--- daemon/gdm-display.c (revision 6581)
+++ daemon/gdm-display.c (revision 6582)
@@ -37,6 +37,9 @@
#include "gdm-display-glue.h"
#include "gdm-display-access-file.h"
+#include "gdm-settings-direct.h"
+#include "gdm-settings-keys.h"
+
#include "gdm-slave-proxy.h"
static guint32 display_serial = 1;
@@ -299,6 +302,90 @@
return ret;
}
+static void
+gdm_display_real_get_timed_login_details (GdmDisplay *display,
+ gboolean *enabledp,
+ char **usernamep,
+ int *delayp)
+{
+ gboolean res;
+ gboolean enabled;
+ int delay;
+ char *username;
+
+ enabled = FALSE;
+ username = NULL;
+ delay = 0;
+
+ res = gdm_settings_direct_get_boolean (GDM_KEY_AUTO_LOGIN_ENABLE, &enabled);
+ if (enabled) {
+ res = gdm_settings_direct_get_string (GDM_KEY_AUTO_LOGIN_USER, &username);
+ }
+
+ if (enabled && username != NULL && username[0] != '\0') {
+ goto out;
+ }
+
+ g_free (username);
+ username = NULL;
+ enabled = FALSE;
+
+ res = gdm_settings_direct_get_boolean (GDM_KEY_TIMED_LOGIN_ENABLE, &enabled);
+ if (! enabled) {
+ goto out;
+ }
+
+ res = gdm_settings_direct_get_string (GDM_KEY_TIMED_LOGIN_USER, &username);
+ if (username == NULL || username[0] == '\0') {
+ enabled = FALSE;
+ g_free (username);
+ username = NULL;
+ /* FIXME: check if a valid username? */
+ goto out;
+ }
+
+ delay = 0;
+ res = gdm_settings_direct_get_int (GDM_KEY_TIMED_LOGIN_DELAY, &delay);
+
+ if (delay <= 0) {
+ /* we don't allow the timed login to have a zero delay */
+ delay = 10;
+ }
+
+ out:
+ if (enabledp != NULL) {
+ *enabledp = enabled;
+ }
+ if (usernamep != NULL) {
+ *usernamep = username;
+ } else {
+ g_free (username);
+ }
+ if (delayp != NULL) {
+ *delayp = delay;
+ }
+}
+
+gboolean
+gdm_display_get_timed_login_details (GdmDisplay *display,
+ gboolean *enabled,
+ char **username,
+ int *delay,
+ GError **error)
+{
+ g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
+
+ GDM_DISPLAY_GET_CLASS (display)->get_timed_login_details (display, enabled, username, delay);
+
+ g_debug ("GdmSlave: Got timed login details for display %s: %d '%s' %d",
+ display->priv->x11_display_name,
+ *enabled,
+ *username,
+ *delay);
+
+ return TRUE;
+}
+
static gboolean
gdm_display_real_remove_user_authorization (GdmDisplay *display,
const char *username,
@@ -579,7 +666,7 @@
}
elapsed = g_timer_elapsed (display->priv->slave_timer, NULL);
- if (elapsed < 10) {
+ if (elapsed < 3) {
g_warning ("GdmDisplay: display lasted %lf seconds", elapsed);
_gdm_display_set_status (display, GDM_DISPLAY_FAILED);
} else {
@@ -897,6 +984,7 @@
klass->add_user_authorization = gdm_display_real_add_user_authorization;
klass->remove_user_authorization = gdm_display_real_remove_user_authorization;
klass->set_slave_bus_name = gdm_display_real_set_slave_bus_name;
+ klass->get_timed_login_details = gdm_display_real_get_timed_login_details;
klass->manage = gdm_display_real_manage;
klass->finish = gdm_display_real_finish;
klass->unmanage = gdm_display_real_unmanage;
Index: daemon/gdm-transient-display.c
===================================================================
--- daemon/gdm-transient-display.c (revision 6581)
+++ daemon/gdm-transient-display.c (revision 6582)
@@ -145,6 +145,17 @@
}
static void
+gdm_transient_display_get_timed_login_details (GdmDisplay *display,
+ gboolean *enabledp,
+ char **usernamep,
+ int *delayp)
+{
+ *enabledp = FALSE;
+ *usernamep = g_strdup ("");
+ *delayp = 0;
+}
+
+static void
gdm_transient_display_class_init (GdmTransientDisplayClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -160,6 +171,7 @@
display_class->manage = gdm_transient_display_manage;
display_class->finish = gdm_transient_display_finish;
display_class->unmanage = gdm_transient_display_unmanage;
+ display_class->get_timed_login_details = gdm_transient_display_get_timed_login_details;
g_type_class_add_private (klass, sizeof (GdmTransientDisplayPrivate));
Index: daemon/gdm-display.h
===================================================================
--- daemon/gdm-display.h (revision 6581)
+++ daemon/gdm-display.h (revision 6582)
@@ -68,6 +68,10 @@
gboolean (*manage) (GdmDisplay *display);
gboolean (*finish) (GdmDisplay *display);
gboolean (*unmanage) (GdmDisplay *display);
+ void (*get_timed_login_details) (GdmDisplay *display,
+ gboolean *enabled,
+ char **username,
+ int *delay);
} GdmDisplayClass;
typedef enum
@@ -110,6 +114,11 @@
gboolean gdm_display_is_local (GdmDisplay *display,
gboolean *local,
GError **error);
+gboolean gdm_display_get_timed_login_details (GdmDisplay *display,
+ gboolean *enabled,
+ char **username,
+ int *delay,
+ GError **error);
/* exported but protected */
gboolean gdm_display_get_x11_cookie (GdmDisplay *display,
Index: daemon/gdm-static-display.c
===================================================================
--- daemon/gdm-static-display.c (revision 6581)
+++ daemon/gdm-static-display.c (revision 6582)
@@ -45,7 +45,7 @@
struct GdmStaticDisplayPrivate
{
- gpointer dummy;
+ gboolean enable_timed_login;
};
enum {
@@ -121,6 +121,9 @@
{
g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
+ /* Only allow timed/automatic login once */
+ GDM_STATIC_DISPLAY (display)->priv->enable_timed_login = FALSE;
+
GDM_DISPLAY_CLASS (gdm_static_display_parent_class)->unmanage (display);
return TRUE;
@@ -153,6 +156,21 @@
}
static void
+gdm_static_display_get_timed_login_details (GdmDisplay *display,
+ gboolean *enabledp,
+ char **usernamep,
+ int *delayp)
+{
+ if (GDM_STATIC_DISPLAY (display)->priv->enable_timed_login) {
+ GDM_DISPLAY_CLASS (gdm_static_display_parent_class)->get_timed_login_details (display, enabledp, usernamep, delayp);
+ } else {
+ *enabledp = FALSE;
+ *usernamep = g_strdup ("");
+ *delayp = 0;
+ }
+}
+
+static void
gdm_static_display_class_init (GdmStaticDisplayClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -168,6 +186,7 @@
display_class->manage = gdm_static_display_manage;
display_class->finish = gdm_static_display_finish;
display_class->unmanage = gdm_static_display_unmanage;
+ display_class->get_timed_login_details = gdm_static_display_get_timed_login_details;
g_type_class_add_private (klass, sizeof (GdmStaticDisplayPrivate));
@@ -179,6 +198,8 @@
{
static_display->priv = GDM_STATIC_DISPLAY_GET_PRIVATE (static_display);
+
+ static_display->priv->enable_timed_login = TRUE;
}
static void
Index: daemon/gdm-simple-slave.c
===================================================================
--- daemon/gdm-simple-slave.c (revision 6581)
+++ daemon/gdm-simple-slave.c (revision 6582)
@@ -74,9 +74,10 @@
guint connection_attempts;
GdmServer *server;
+ GdmSessionDirect *session;
+
GdmGreeterServer *greeter_server;
GdmGreeterSession *greeter;
- GdmSessionDirect *session;
guint start_session_when_ready : 1;
guint waiting_to_start_session : 1;
@@ -93,6 +94,7 @@
G_DEFINE_TYPE (GdmSimpleSlave, gdm_simple_slave, GDM_TYPE_SLAVE)
static void create_new_session (GdmSimpleSlave *slave);
+static void start_greeter (GdmSimpleSlave *slave);
static void
on_session_started (GdmSession *session,
@@ -176,8 +178,14 @@
greeter_reset_timeout (GdmSimpleSlave *slave)
{
g_debug ("GdmSimpleSlave: resetting greeter");
- gdm_greeter_server_reset (slave->priv->greeter_server);
- reset_session (slave);
+
+ if (slave->priv->greeter_server != NULL) {
+ gdm_greeter_server_reset (slave->priv->greeter_server);
+ reset_session (slave);
+ } else {
+ start_greeter (slave);
+ create_new_session (slave);
+ }
slave->priv->greeter_reset_id = 0;
return FALSE;
}
@@ -204,7 +212,10 @@
const char *message,
GdmSimpleSlave *slave)
{
- gdm_greeter_server_problem (slave->priv->greeter_server, _("Unable to initialize login system"));
+ if (slave->priv->greeter_server != NULL) {
+ gdm_greeter_server_problem (slave->priv->greeter_server,
+ _("Unable to initialize login system"));
+ }
destroy_session (slave);
queue_greeter_reset (slave);
@@ -237,7 +248,10 @@
const char *message,
GdmSimpleSlave *slave)
{
- gdm_greeter_server_problem (slave->priv->greeter_server, _("Unable to authenticate user"));
+ if (slave->priv->greeter_server != NULL) {
+ gdm_greeter_server_problem (slave->priv->greeter_server,
+ _("Unable to authenticate user"));
+ }
destroy_session (slave);
queue_greeter_reset (slave);
}
@@ -274,8 +288,13 @@
on_session_authorized (GdmSession *session,
GdmSimpleSlave *slave)
{
- gdm_greeter_server_user_authorized (slave->priv->greeter_server);
- gdm_simple_slave_accredit_when_ready (slave);
+ if (slave->priv->greeter_server != NULL) {
+ gdm_greeter_server_user_authorized (slave->priv->greeter_server);
+ gdm_simple_slave_accredit_when_ready (slave);
+ } else {
+ slave->priv->start_session_when_ready = TRUE;
+ gdm_simple_slave_accredit_when_ready (slave);
+ }
}
static void
@@ -283,7 +302,10 @@
const char *message,
GdmSimpleSlave *slave)
{
- gdm_greeter_server_problem (slave->priv->greeter_server, _("Unable to authorize user"));
+ if (slave->priv->greeter_server != NULL) {
+ gdm_greeter_server_problem (slave->priv->greeter_server,
+ _("Unable to authorize user"));
+ }
destroy_session (slave);
queue_greeter_reset (slave);
@@ -306,7 +328,26 @@
return res;
}
+static void
+stop_greeter (GdmSimpleSlave *slave)
+{
+ g_debug ("GdmSimpleSlave: Stopping greeter");
+ if (slave->priv->greeter == NULL) {
+ g_debug ("GdmSimpleSlave: No greeter running");
+ return;
+ }
+
+ /* Run the PostLogin script. gdmslave suspends until script has terminated */
+ gdm_slave_run_script (GDM_SLAVE (slave), GDMCONFDIR "/PostLogin", GDM_USERNAME);
+
+ gdm_welcome_session_stop (GDM_WELCOME_SESSION (slave->priv->greeter));
+ gdm_greeter_server_stop (slave->priv->greeter_server);
+
+ g_object_unref (slave->priv->greeter);
+ slave->priv->greeter = NULL;
+}
+
static gboolean
start_session_timeout (GdmSimpleSlave *slave)
{
@@ -330,8 +371,7 @@
goto out;
}
- gdm_welcome_session_stop (GDM_WELCOME_SESSION (slave->priv->greeter));
- gdm_greeter_server_stop (slave->priv->greeter_server);
+ stop_greeter (slave);
auth_file = NULL;
add_user_authorization (slave, &auth_file);
@@ -365,9 +405,6 @@
GdmSimpleSlave *slave)
{
queue_start_session (slave);
-
- /* Run the PostLogin script. gdmslave suspends until script has terminated */
- gdm_slave_run_script (GDM_SLAVE (slave), GDMCONFDIR "/PostLogin", GDM_USERNAME);
}
static void
@@ -384,7 +421,10 @@
/* If we switched to another session we don't care if
accreditation fails */
if (! migrated) {
- gdm_greeter_server_problem (slave->priv->greeter_server, _("Unable establish credentials"));
+ if (slave->priv->greeter_server != NULL) {
+ gdm_greeter_server_problem (slave->priv->greeter_server,
+ _("Unable establish credentials"));
+ }
}
/* We don't stop the slave here after migrating because
@@ -402,7 +442,9 @@
GdmSimpleSlave *slave)
{
g_debug ("GdmSimpleSlave: Info: %s", text);
- gdm_greeter_server_info (slave->priv->greeter_server, text);
+ if (slave->priv->greeter_server != NULL) {
+ gdm_greeter_server_info (slave->priv->greeter_server, text);
+ }
}
static void
@@ -433,64 +475,39 @@
gdm_greeter_server_secret_info_query (slave->priv->greeter_server, text);
}
-static gboolean
-get_timed_login_details (GdmSimpleSlave *slave,
- char **username,
- int *delay)
-{
- gboolean enabled;
- gboolean res;
-
- enabled = FALSE;
- res = gdm_settings_client_get_boolean (GDM_KEY_AUTO_LOGIN_ENABLE, &enabled);
- if (enabled) {
-
- *username = NULL;
- res = gdm_settings_client_get_string (GDM_KEY_AUTO_LOGIN_USER, username);
- }
-
- if (enabled && *username != NULL)
- {
- *delay = 0;
- return TRUE;
- }
-
- *username = NULL;
- enabled = FALSE;
- res = gdm_settings_client_get_boolean (GDM_KEY_TIMED_LOGIN_ENABLE, &enabled);
- if (! enabled) {
- return FALSE;
- }
-
- res = gdm_settings_client_get_string (GDM_KEY_TIMED_LOGIN_USER, username);
-
- if (username == NULL) {
- return FALSE;
- }
-
- res = gdm_settings_client_get_int (GDM_KEY_TIMED_LOGIN_DELAY, delay);
-
- return TRUE;
-}
-
static void
on_session_opened (GdmSession *session,
GdmSimpleSlave *slave)
{
gboolean res;
+ gboolean enabled;
char *username;
int delay;
g_debug ("GdmSimpleSlave: session opened");
- res = gdm_greeter_server_ready (slave->priv->greeter_server);
- if (! res) {
- g_warning ("Unable to send ready");
+ if (slave->priv->greeter_server != NULL) {
+ res = gdm_greeter_server_ready (slave->priv->greeter_server);
+ if (! res) {
+ g_warning ("Unable to send ready");
+ }
}
- if (get_timed_login_details (slave, &username, &delay)) {
+ enabled = FALSE;
+ gdm_slave_get_timed_login_details (GDM_SLAVE (slave), &enabled, &username, &delay);
+ if (! enabled) {
+ return;
+ }
+
+ if (slave->priv->greeter_server != NULL) {
gdm_greeter_server_request_timed_login (slave->priv->greeter_server, username, delay);
- g_free (username);
+ } else {
+ g_debug ("GdmSimpleSlave: begin auto login for user '%s'", username);
+ gdm_session_setup_for_user (GDM_SESSION (slave->priv->session),
+ "gdm-autologin",
+ username);
}
+
+ g_free (username);
}
static void
@@ -500,7 +517,9 @@
{
g_debug ("GdmSimpleSlave: Selected user changed: %s", text);
- gdm_greeter_server_selected_user_changed (slave->priv->greeter_server, text);
+ if (slave->priv->greeter_server != NULL) {
+ gdm_greeter_server_selected_user_changed (slave->priv->greeter_server, text);
+ }
}
static void
@@ -510,7 +529,9 @@
{
g_debug ("GdmSimpleSlave: Default language name changed: %s", text);
- gdm_greeter_server_default_language_name_changed (slave->priv->greeter_server, text);
+ if (slave->priv->greeter_server != NULL) {
+ gdm_greeter_server_default_language_name_changed (slave->priv->greeter_server, text);
+ }
}
static void
@@ -520,7 +541,9 @@
{
g_debug ("GdmSimpleSlave: Default layout name changed: %s", text);
- gdm_greeter_server_default_layout_name_changed (slave->priv->greeter_server, text);
+ if (slave->priv->greeter_server != NULL) {
+ gdm_greeter_server_default_layout_name_changed (slave->priv->greeter_server, text);
+ }
}
static void
@@ -530,7 +553,9 @@
{
g_debug ("GdmSimpleSlave: Default session name changed: %s", text);
- gdm_greeter_server_default_session_name_changed (slave->priv->greeter_server, text);
+ if (slave->priv->greeter_server != NULL) {
+ gdm_greeter_server_default_session_name_changed (slave->priv->greeter_server, text);
+ }
}
static void
@@ -828,7 +853,7 @@
}
static void
-run_greeter (GdmSimpleSlave *slave)
+start_greeter (GdmSimpleSlave *slave)
{
gboolean display_is_local;
char *display_id;
@@ -871,8 +896,6 @@
/* Run the init script. gdmslave suspends until script has terminated */
gdm_slave_run_script (GDM_SLAVE (slave), GDMCONFDIR "/Init", GDM_USERNAME);
- create_new_session (slave);
-
slave->priv->greeter_server = gdm_greeter_server_new (display_id);
g_signal_connect (slave->priv->greeter_server,
"begin-auto-login",
@@ -971,10 +994,22 @@
res = gdm_slave_connect_to_x11_display (GDM_SLAVE (slave));
if (res) {
+ gboolean enabled;
+ int delay;
+
/* FIXME: handle wait-for-go */
setup_server (slave);
- run_greeter (slave);
+
+ delay = 0;
+ enabled = FALSE;
+ gdm_slave_get_timed_login_details (GDM_SLAVE (slave), &enabled, NULL, &delay);
+ if (! enabled || delay > 0) {
+ start_greeter (slave);
+ create_new_session (slave);
+ } else {
+ reset_session (slave);
+ }
} else {
if (slave->priv->connection_attempts >= MAX_CONNECT_ATTEMPTS) {
g_warning ("Unable to connect to display after %d tries - bailing out", slave->priv->connection_attempts);
@@ -1099,9 +1134,7 @@
GDM_SLAVE_CLASS (gdm_simple_slave_parent_class)->stop (slave);
if (GDM_SIMPLE_SLAVE (slave)->priv->greeter != NULL) {
- gdm_welcome_session_stop (GDM_WELCOME_SESSION (GDM_SIMPLE_SLAVE (slave)->priv->greeter));
- g_object_unref (GDM_SIMPLE_SLAVE (slave)->priv->greeter);
- GDM_SIMPLE_SLAVE (slave)->priv->greeter = NULL;
+ stop_greeter (GDM_SIMPLE_SLAVE (slave));
}
if (GDM_SIMPLE_SLAVE (slave)->priv->session != NULL) {

View File

@ -0,0 +1,105 @@
Index: gdm-2.24.0/data/gdm.conf.in
===================================================================
--- gdm-2.24.0.orig/data/gdm.conf.in
+++ gdm-2.24.0/data/gdm.conf.in
@@ -7,52 +7,76 @@
<policy user="root">
<allow own="org.gnome.DisplayManager"/>
- <allow send_interface="org.gnome.DisplayManager.Manager"/>
- <allow send_interface="org.gnome.DisplayManager.Display"/>
- <allow send_interface="org.gnome.DisplayManager.LocalDisplayFactory"/>
- <allow send_interface="org.gnome.DisplayManager.Settings"/>
- <allow send_interface="org.gnome.DisplayManager.Slave"/>
- <allow send_interface="org.gnome.DisplayManager.Session"/>
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Manager"/>
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Display"/>
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.LocalDisplayFactory"/>
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Settings"/>
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Slave"/>
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Session"/>
<allow send_destination="org.gnome.DisplayManager"
send_interface="org.gnome.DBus.Properties" />
</policy>
<policy context="default">
- <deny send_interface="org.gnome.DisplayManager.Manager"/>
- <deny send_interface="org.gnome.DisplayManager.Display"/>
- <deny send_interface="org.gnome.DisplayManager.LocalDisplayFactory"/>
- <deny send_interface="org.gnome.DisplayManager.Settings"/>
- <deny send_interface="org.gnome.DisplayManager.Slave"/>
- <deny send_interface="org.gnome.DisplayManager.Session"/>
+ <deny send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Manager"/>
+ <deny send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Display"/>
+ <deny send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.LocalDisplayFactory"/>
+ <deny send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Settings"/>
+ <deny send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Slave"/>
+ <deny send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Session"/>
<deny send_destination="org.gnome.DisplayManager"
send_interface="org.gnome.DBus.Properties" />
- <allow send_interface="org.gnome.DisplayManager.Display"
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Display"
send_member="GetId"/>
- <allow send_interface="org.gnome.DisplayManager.Display"
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Display"
send_member="GetRemoteHostname"/>
- <allow send_interface="org.gnome.DisplayManager.Display"
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Display"
send_member="GetSeatId"/>
- <allow send_interface="org.gnome.DisplayManager.Display"
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Display"
send_member="GetX11DisplayName"/>
- <allow send_interface="org.gnome.DisplayManager.Display"
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Display"
send_member="GetX11DisplayNumber"/>
- <allow send_interface="org.gnome.DisplayManager.Display"
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Display"
send_member="IsLocal"/>
- <allow send_interface="org.gnome.DisplayManager.LocalDisplayFactory"
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.LocalDisplayFactory"
send_member="CreateTransientDisplay"/>
- <allow send_interface="org.gnome.DisplayManager.Manager"
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Manager"
send_member="GetDisplays"/>
</policy>
<policy user="@GDM_USERNAME@">
- <allow send_interface="org.gnome.DisplayManager.Manager"/>
- <allow send_interface="org.gnome.DisplayManager.Display"/>
- <allow send_interface="org.gnome.DisplayManager.LocalDisplayFactory"/>
- <allow send_interface="org.gnome.DisplayManager.Settings"/>
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Manager"/>
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Display"/>
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.LocalDisplayFactory"/>
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Settings"/>
<allow send_destination="org.gnome.DisplayManager"
send_interface="org.gnome.DBus.Properties" />
</policy>

View File

@ -1727,9 +1727,9 @@ index 50478c5..825f0c5 100644
--- a/gui/simple-greeter/gdm-greeter-panel.c
+++ b/gui/simple-greeter/gdm-greeter-panel.c
@@ -40,6 +40,7 @@
#include "gdm-language-option-widget.h"
#include "gdm-layout-option-widget.h"
#include "gdm-session-option-widget.h"
#include "gdm-timer.h"
+#include "gdm-domain-option-widget.h"
#include "gdm-profile.h"
@ -1740,8 +1740,8 @@ index 50478c5..825f0c5 100644
GtkWidget *session_option_widget;
+ GtkWidget *domain_option_widget;
char *default_session_name;
char *default_language_name;
GdmTimer *animation_timer;
double progress;
@@ -72,6 +74,7 @@ enum {
LANGUAGE_SELECTED,
LAYOUT_SELECTED,

View File

@ -1,105 +0,0 @@
diff -up gdm-2.24.0/gui/simple-greeter/gdm-user-chooser-widget.c.fix-icon-scale gdm-2.24.0/gui/simple-greeter/gdm-user-chooser-widget.c
--- gdm-2.24.0/gui/simple-greeter/gdm-user-chooser-widget.c.fix-icon-scale 2008-09-22 13:01:21.000000000 -0400
+++ gdm-2.24.0/gui/simple-greeter/gdm-user-chooser-widget.c 2008-09-30 17:31:00.000000000 -0400
@@ -51,7 +51,7 @@ enum {
#define GDM_USER_CHOOSER_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_USER_CHOOSER_WIDGET, GdmUserChooserWidgetPrivate))
-#define ICON_SIZE 96
+#define MAX_ICON_SIZE 128
struct GdmUserChooserWidgetPrivate
{
@@ -83,6 +83,45 @@ static void gdm_user_chooser_widget_
G_DEFINE_TYPE (GdmUserChooserWidget, gdm_user_chooser_widget, GDM_TYPE_CHOOSER_WIDGET)
+static int
+get_font_height_for_widget (GtkWidget *widget)
+{
+ PangoFontMetrics *metrics;
+ PangoContext *context;
+ int ascent;
+ int descent;
+ int height;
+
+ gtk_widget_ensure_style (widget);
+ context = gtk_widget_get_pango_context (widget);
+ metrics = pango_context_get_metrics (context,
+ widget->style->font_desc,
+ pango_context_get_language (context));
+
+ ascent = pango_font_metrics_get_ascent (metrics);
+ descent = pango_font_metrics_get_descent (metrics);
+ height = PANGO_PIXELS (ascent + descent);
+ pango_font_metrics_unref (metrics);
+ return height;
+}
+
+static int
+get_icon_height_for_widget (GtkWidget *widget)
+{
+ int font_height;
+ int height;
+
+ font_height = get_font_height_for_widget (widget);
+ height = 3 * font_height;
+ if (height > MAX_ICON_SIZE) {
+ height = MAX_ICON_SIZE;
+ }
+
+ g_debug ("GdmUserChooserWidget: font height %d; using icon size %d", font_height, height);
+
+ return height;
+}
+
static void
add_user_other (GdmUserChooserWidget *widget)
{
@@ -295,12 +334,14 @@ add_user (GdmUserChooserWidget *widget,
GdkPixbuf *pixbuf;
char *tooltip;
gboolean is_logged_in;
+ int size;
if (!widget->priv->show_normal_users) {
return;
}
- pixbuf = gdm_user_render_icon (user, ICON_SIZE);
+ size = get_icon_height_for_widget (widget);
+ pixbuf = gdm_user_render_icon (user, size);
if (pixbuf == NULL && widget->priv->stock_person_pixbuf != NULL) {
pixbuf = g_object_ref (widget->priv->stock_person_pixbuf);
}
@@ -537,10 +578,13 @@ static GdkPixbuf *
get_stock_person_pixbuf (GdmUserChooserWidget *widget)
{
GdkPixbuf *pixbuf;
+ int size;
+
+ size = get_icon_height_for_widget (widget);
pixbuf = gtk_icon_theme_load_icon (widget->priv->icon_theme,
DEFAULT_USER_ICON,
- ICON_SIZE,
+ size,
0,
NULL);
@@ -551,10 +595,13 @@ static GdkPixbuf *
get_logged_in_pixbuf (GdmUserChooserWidget *widget)
{
GdkPixbuf *pixbuf;
+ int size;
+
+ size = get_icon_height_for_widget (widget);
pixbuf = gtk_icon_theme_load_icon (widget->priv->icon_theme,
"emblem-default",
- ICON_SIZE / 3,
+ size / 3,
0,
NULL);

View File

@ -0,0 +1,22 @@
Index: gdm-2.24.0/gui/simple-greeter/gdm-languages.c
===================================================================
--- gdm-2.24.0.orig/gui/simple-greeter/gdm-languages.c
+++ gdm-2.24.0/gui/simple-greeter/gdm-languages.c
@@ -482,7 +482,7 @@ select_dirs (const struct dirent *dirent
struct stat st;
char *path;
- path = g_build_filename (GNOMELOCALEDIR, dirent->d_name, NULL);
+ path = g_build_filename (LIBLOCALEDIR, dirent->d_name, NULL);
if (g_stat (path, &st) == 0) {
mode = st.st_mode;
}
@@ -502,7 +502,7 @@ collect_locales_from_directory (void)
int ndirents;
int cnt;
- ndirents = scandir (GNOMELOCALEDIR, &dirents, select_dirs, alphasort);
+ ndirents = scandir (LIBLOCALEDIR, &dirents, select_dirs, alphasort);
for (cnt = 0; cnt < ndirents; ++cnt) {
add_locale (dirents[cnt]->d_name);

View File

@ -1,93 +0,0 @@
Index: daemon/gdm-session-linux-auditor.c
===================================================================
--- daemon/gdm-session-linux-auditor.c (revision 6589)
+++ daemon/gdm-session-linux-auditor.c (revision 6593)
@@ -45,8 +45,9 @@ static void gdm_session_linux_auditor_fi
G_DEFINE_TYPE (GdmSessionLinuxAuditor, gdm_session_linux_auditor, GDM_TYPE_SESSION_AUDITOR)
static void
-gdm_session_linux_auditor_report_login_attempt (GdmSessionAuditor *auditor,
- gboolean was_successful)
+log_user_message (GdmSessionAuditor *auditor,
+ gint type,
+ gint result)
{
GdmSessionLinuxAuditor *linux_auditor;
char buf[512];
@@ -70,14 +71,14 @@ gdm_session_linux_auditor_report_login_a
if (pw != NULL) {
g_snprintf (buf, sizeof (buf), "uid=%d", pw->pw_uid);
- audit_log_user_message (linux_auditor->priv->audit_fd, AUDIT_USER_LOGIN,
+ audit_log_user_message (linux_auditor->priv->audit_fd, type,
buf, hostname, NULL, display_device,
- was_successful != FALSE);
+ result);
} else {
g_snprintf (buf, sizeof (buf), "acct=%s", username);
- audit_log_user_message (linux_auditor->priv->audit_fd, AUDIT_USER_LOGIN,
+ audit_log_user_message (linux_auditor->priv->audit_fd, type,
buf, hostname, NULL, display_device,
- was_successful != FALSE);
+ result);
}
g_free (username);
@@ -88,7 +89,7 @@ gdm_session_linux_auditor_report_login_a
static void
gdm_session_linux_auditor_report_login (GdmSessionAuditor *auditor)
{
- gdm_session_linux_auditor_report_login_attempt (auditor, TRUE);
+ log_user_message (auditor, AUDIT_USER_LOGIN, 1);
}
static void
@@ -96,8 +97,13 @@ gdm_session_linux_auditor_report_login_f
int pam_error_code,
const char *pam_error_string)
{
+ log_user_message (auditor, AUDIT_USER_LOGIN, 0);
+}
- gdm_session_linux_auditor_report_login_attempt (auditor, FALSE);
+static void
+gdm_session_linux_auditor_report_logout (GdmSessionAuditor *auditor)
+{
+ log_user_message (auditor, AUDIT_USER_LOGOUT, 1);
}
static void
@@ -113,6 +119,7 @@ gdm_session_linux_auditor_class_init (Gd
auditor_class->report_login = gdm_session_linux_auditor_report_login;
auditor_class->report_login_failure = gdm_session_linux_auditor_report_login_failure;
+ auditor_class->report_logout = gdm_session_linux_auditor_report_logout;
g_type_class_add_private (auditor_class, sizeof (GdmSessionLinuxAuditorPrivate));
}
Index: daemon/gdm-session-worker.c
===================================================================
--- daemon/gdm-session-worker.c (revision 6589)
+++ daemon/gdm-session-worker.c (revision 6593)
@@ -974,10 +974,6 @@ gdm_session_worker_uninitialize_pam (Gdm
if (worker->priv->pam_handle == NULL)
return;
- if (worker->priv->state >= GDM_SESSION_WORKER_STATE_ACCREDITED) {
- pam_setcred (worker->priv->pam_handle, PAM_DELETE_CRED);
- }
-
if (worker->priv->state >= GDM_SESSION_WORKER_STATE_SESSION_OPENED) {
pam_close_session (worker->priv->pam_handle, 0);
gdm_session_auditor_report_logout (worker->priv->auditor);
@@ -987,6 +983,10 @@ gdm_session_worker_uninitialize_pam (Gdm
pam_strerror (worker->priv->pam_handle, status));
}
+ if (worker->priv->state >= GDM_SESSION_WORKER_STATE_ACCREDITED) {
+ pam_setcred (worker->priv->pam_handle, PAM_DELETE_CRED);
+ }
+
pam_end (worker->priv->pam_handle, status);
worker->priv->pam_handle = NULL;

View File

@ -1,28 +0,0 @@
diff -upr gdm-2.24.0-org/daemon/gdm-manager.c gdm-2.24.0/daemon/gdm-manager.c
--- gdm-2.24.0-org/daemon/gdm-manager.c 2008-07-29 11:40:42.000000000 +0900
+++ gdm-2.24.0/daemon/gdm-manager.c 2008-11-19 02:11:55.000000000 +0900
@@ -328,9 +328,7 @@ gdm_manager_constructor (GType
manager->priv->local_factory = gdm_local_display_factory_new (manager->priv->display_store);
#ifdef HAVE_LIBXDMCP
- if (manager->priv->xdmcp_enabled) {
- manager->priv->xdmcp_factory = gdm_xdmcp_display_factory_new (manager->priv->display_store);
- }
+ manager->priv->xdmcp_factory = gdm_xdmcp_display_factory_new (manager->priv->display_store);
#endif
return G_OBJECT (manager);
diff -upr gdm-2.24.0-org/daemon/gdm-xdmcp-display-factory.c gdm-2.24.0/daemon/gdm-xdmcp-display-factory.c
--- gdm-2.24.0-org/daemon/gdm-xdmcp-display-factory.c 2008-11-15 22:43:39.000000000 +0900
+++ gdm-2.24.0/daemon/gdm-xdmcp-display-factory.c 2008-11-16 10:47:32.000000000 +0900
@@ -2044,6 +2052,10 @@ gdm_xdmcp_display_create (GdmXdmcpDispla
store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
gdm_display_store_add (store, display);
+ if (! gdm_display_manage (display)) {
+ gdm_display_unmanage (display);
+ }
+
factory->priv->num_pending_sessions++;
out:

398
gdm-hide-lonely-other.patch Normal file
View File

@ -0,0 +1,398 @@
Index: gui/simple-greeter/gdm-user-chooser-widget.c
===================================================================
--- gui/simple-greeter/gdm-user-chooser-widget.c (révision 6670)
+++ gui/simple-greeter/gdm-user-chooser-widget.c (copie de travail)
@@ -67,6 +67,8 @@ struct GdmUserChooserWidgetPrivate
guint show_user_auto : 1;
guint show_normal_users : 1;
+ guint real_show_user_other : 1;
+
guint load_idle_id;
};
@@ -83,6 +85,9 @@ static void gdm_user_chooser_widget_
G_DEFINE_TYPE (GdmUserChooserWidget, gdm_user_chooser_widget, GDM_TYPE_CHOOSER_WIDGET)
+static void add_user_other (GdmUserChooserWidget *widget);
+static void remove_user_other (GdmUserChooserWidget *widget);
+
static int
get_font_height_for_widget (GtkWidget *widget)
{
@@ -123,8 +128,31 @@ get_icon_height_for_widget (GtkWidget *w
}
static void
+update_other_user_visibility (GdmUserChooserWidget *widget)
+{
+ if (!widget->priv->show_user_other) {
+ if (widget->priv->real_show_user_other) {
+ remove_user_other (widget);
+ }
+
+ return;
+ }
+
+ if (gdm_chooser_widget_get_number_of_items (GDM_CHOOSER_WIDGET (widget)) == 1) {
+ /* we hide the Other user if it's the last one, and we show it
+ * if there's another user */
+ if (widget->priv->real_show_user_other) {
+ remove_user_other (widget);
+ } else {
+ add_user_other (widget);
+ }
+ }
+}
+
+static void
add_user_other (GdmUserChooserWidget *widget)
{
+ widget->priv->real_show_user_other = TRUE;
gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget),
GDM_USER_CHOOSER_USER_OTHER,
NULL,
@@ -146,6 +174,7 @@ add_user_guest (GdmUserChooserWidget *wi
0,
FALSE,
TRUE);
+ update_other_user_visibility (widget);
}
static void
@@ -159,11 +188,13 @@ add_user_auto (GdmUserChooserWidget *wid
0,
FALSE,
TRUE);
+ update_other_user_visibility (widget);
}
static void
remove_user_other (GdmUserChooserWidget *widget)
{
+ widget->priv->real_show_user_other = FALSE;
gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget),
GDM_USER_CHOOSER_USER_OTHER);
}
@@ -173,6 +204,7 @@ remove_user_guest (GdmUserChooserWidget
{
gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget),
GDM_USER_CHOOSER_USER_GUEST);
+ update_other_user_visibility (widget);
}
static void
@@ -180,6 +212,7 @@ remove_user_auto (GdmUserChooserWidget *
{
gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget),
GDM_USER_CHOOSER_USER_AUTO);
+ update_other_user_visibility (widget);
}
void
@@ -190,11 +223,7 @@ gdm_user_chooser_widget_set_show_user_ot
if (widget->priv->show_user_other != show_user) {
widget->priv->show_user_other = show_user;
- if (show_user) {
- add_user_other (widget);
- } else {
- remove_user_other (widget);
- }
+ update_other_user_visibility (widget);
}
}
@@ -369,6 +398,8 @@ add_user (GdmUserChooserWidget *widget,
if (pixbuf != NULL) {
g_object_unref (pixbuf);
}
+
+ update_other_user_visibility (widget);
}
static void
@@ -400,6 +431,8 @@ on_user_removed (GdmUserManager *m
gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget),
user_name);
+
+ update_other_user_visibility (widget);
}
static void
@@ -444,8 +477,6 @@ on_users_loaded (GdmUserManager *m
{
GSList *users;
- widget->priv->loaded = TRUE;
-
g_debug ("GdmUserChooserWidget: Users loaded");
users = gdm_user_manager_list_users (manager);
@@ -454,7 +485,7 @@ on_users_loaded (GdmUserManager *m
users = g_slist_delete_link (users, users);
}
- gtk_widget_grab_focus (GTK_WIDGET (widget));
+ widget->priv->loaded = TRUE;
gdm_chooser_widget_loaded (GDM_CHOOSER_WIDGET (widget));
}
@@ -505,6 +536,7 @@ gdm_user_chooser_widget_constructor (GTy
n_construct_properties,
construct_properties));
+ widget->priv->real_show_user_other = FALSE;
widget->priv->show_normal_users = !is_user_list_disabled (widget);
widget->priv->load_idle_id = g_idle_add ((GSourceFunc)load_users, widget);
Index: gui/simple-greeter/gdm-greeter-login-window.c
===================================================================
--- gui/simple-greeter/gdm-greeter-login-window.c (révision 6670)
+++ gui/simple-greeter/gdm-greeter-login-window.c (copie de travail)
@@ -114,6 +114,7 @@ struct GdmGreeterLoginWindowPrivate
GtkWidget *auth_banner_label;
guint display_is_local : 1;
guint is_interactive : 1;
+ guint user_chooser_loaded : 1;
GConfClient *client;
gboolean banner_message_enabled;
@@ -528,9 +529,13 @@ switch_mode (GdmGreeterLoginWindow *logi
GtkWidget *box;
gboolean show_restart_buttons;
gboolean show_suspend_button;
+ gboolean only_other_user;
+ gboolean show_buttons;
- show_restart_buttons = get_show_restart_buttons (login_window);
- show_suspend_button = can_suspend (login_window);
+ only_other_user = (gdm_chooser_widget_get_number_of_items (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser)) == 0);
+ show_buttons = (number == MODE_SELECTION) || only_other_user;
+ show_restart_buttons = show_buttons && get_show_restart_buttons (login_window);
+ show_suspend_button = show_buttons && can_suspend (login_window);
/* we want to run this even if we're supposed to
be in the mode already so that we reset everything
@@ -539,7 +544,14 @@ switch_mode (GdmGreeterLoginWindow *logi
default_name = NULL;
- remove_sensitize_power_buttons_timeout (login_window);
+ show_widget (login_window, "shutdown-button",
+ login_window->priv->display_is_local && show_restart_buttons);
+ show_widget (login_window, "restart-button",
+ login_window->priv->display_is_local && show_restart_buttons);
+ show_widget (login_window, "suspend-button",
+ login_window->priv->display_is_local && show_restart_buttons && show_suspend_button);
+ show_widget (login_window, "disconnect-button",
+ !login_window->priv->display_is_local && show_buttons);
switch (number) {
case MODE_SELECTION:
@@ -547,15 +559,6 @@ switch_mode (GdmGreeterLoginWindow *logi
show_widget (login_window, "cancel-button", FALSE);
- show_widget (login_window, "shutdown-button",
- login_window->priv->display_is_local && show_restart_buttons);
- show_widget (login_window, "restart-button",
- login_window->priv->display_is_local && show_restart_buttons);
- show_widget (login_window, "suspend-button",
- login_window->priv->display_is_local && show_restart_buttons && show_suspend_button);
- show_widget (login_window, "disconnect-button",
- ! login_window->priv->display_is_local);
-
show_widget (login_window, "auth-input-box", FALSE);
add_sensitize_power_buttons_timeout (login_window);
@@ -568,10 +571,12 @@ switch_mode (GdmGreeterLoginWindow *logi
break;
case MODE_AUTHENTICATION:
show_widget (login_window, "cancel-button", TRUE);
- show_widget (login_window, "shutdown-button", FALSE);
- show_widget (login_window, "restart-button", FALSE);
- show_widget (login_window, "suspend-button", FALSE);
- show_widget (login_window, "disconnect-button", FALSE);
+
+ sensitize_widget (login_window, "shutdown-button", TRUE);
+ sensitize_widget (login_window, "restart-button", TRUE);
+ sensitize_widget (login_window, "suspend-button", TRUE);
+ sensitize_widget (login_window, "disconnect-button", TRUE);
+
default_name = "log-in-button";
break;
default:
@@ -665,10 +670,40 @@ delete_entry_text (GtkWidget *entry)
}
static void
+select_user (GdmGreeterLoginWindow *login_window,
+ const char *user_name)
+{
+ g_signal_emit (G_OBJECT (login_window), signals[USER_SELECTED],
+ 0, user_name);
+
+ if (strcmp (user_name, GDM_USER_CHOOSER_USER_OTHER) == 0) {
+ g_signal_emit (login_window, signals[BEGIN_VERIFICATION], 0);
+ } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_GUEST) == 0) {
+ /* FIXME: handle guest account stuff */
+ } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_AUTO) == 0) {
+ g_signal_emit (login_window, signals[BEGIN_AUTO_LOGIN], 0,
+ login_window->priv->timed_login_username);
+
+ login_window->priv->timed_login_enabled = TRUE;
+ restart_timed_login_timeout (login_window);
+
+ /* just wait for the user to select language and stuff */
+ set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN);
+ set_message (login_window, _("Select language and click Log In"));
+ } else {
+ g_signal_emit (login_window, signals[BEGIN_VERIFICATION_FOR_USER], 0, user_name);
+ }
+
+ switch_mode (login_window, MODE_AUTHENTICATION);
+}
+
+
+static void
reset_dialog (GdmGreeterLoginWindow *login_window)
{
GtkWidget *entry;
GtkWidget *label;
+ gboolean use_selection;
g_debug ("GdmGreeterLoginWindow: Resetting dialog");
set_busy (login_window);
@@ -703,12 +738,21 @@ reset_dialog (GdmGreeterLoginWindow *log
label = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-label");
gtk_label_set_text (GTK_LABEL (label), "");
- switch_mode (login_window, MODE_SELECTION);
+ use_selection = !login_window->priv->user_chooser_loaded || (gdm_chooser_widget_get_number_of_items (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser)) >= 1);
+
+ if (use_selection) {
+ switch_mode (login_window, MODE_SELECTION);
+ } else {
+ select_user (login_window, GDM_USER_CHOOSER_USER_OTHER);
+ }
set_sensitive (login_window, TRUE);
set_ready (login_window);
set_focus (GDM_GREETER_LOGIN_WINDOW (login_window));
- gdm_chooser_widget_propagate_pending_key_events (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser));
+
+ if (use_selection) {
+ gdm_chooser_widget_propagate_pending_key_events (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser));
+ }
}
static void
@@ -1323,7 +1367,19 @@ static void
on_users_loaded (GdmUserChooserWidget *user_chooser,
GdmGreeterLoginWindow *login_window)
{
- gdm_chooser_widget_activate_if_one_item (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser));
+ int number_users;
+
+ login_window->priv->user_chooser_loaded = TRUE;
+
+ number_users = gdm_chooser_widget_get_number_of_items (GDM_CHOOSER_WIDGET (user_chooser));
+
+ if (number_users == 1) {
+ gdm_chooser_widget_activate_if_one_item (GDM_CHOOSER_WIDGET (user_chooser));
+ } else if (number_users == 0) {
+ select_user (login_window, GDM_USER_CHOOSER_USER_OTHER);
+ }
+
+ set_focus (GDM_GREETER_LOGIN_WINDOW (login_window));
}
static void
@@ -1339,28 +1395,7 @@ on_user_chosen (GdmUserChooserWidget *u
return;
}
- g_signal_emit (G_OBJECT (login_window), signals[USER_SELECTED],
- 0, user_name);
-
- if (strcmp (user_name, GDM_USER_CHOOSER_USER_OTHER) == 0) {
- g_signal_emit (login_window, signals[BEGIN_VERIFICATION], 0);
- } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_GUEST) == 0) {
- /* FIXME: handle guest account stuff */
- } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_AUTO) == 0) {
- g_signal_emit (login_window, signals[BEGIN_AUTO_LOGIN], 0,
- login_window->priv->timed_login_username);
-
- login_window->priv->timed_login_enabled = TRUE;
- restart_timed_login_timeout (login_window);
-
- /* just wait for the user to select language and stuff */
- set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN);
- set_message (login_window, _("Select language and click Log In"));
- } else {
- g_signal_emit (login_window, signals[BEGIN_VERIFICATION_FOR_USER], 0, user_name);
- }
-
- switch_mode (login_window, MODE_AUTHENTICATION);
+ select_user (login_window, user_name);
g_free (user_name);
}
@@ -1914,6 +1949,7 @@ gdm_greeter_login_window_init (GdmGreete
login_window->priv = GDM_GREETER_LOGIN_WINDOW_GET_PRIVATE (login_window);
+ login_window->priv->user_chooser_loaded = FALSE;
login_window->priv->timed_login_enabled = FALSE;
login_window->priv->dialog_mode = MODE_SELECTION;
Index: gui/simple-greeter/gdm-chooser-widget.c
===================================================================
--- gui/simple-greeter/gdm-chooser-widget.c (révision 6670)
+++ gui/simple-greeter/gdm-chooser-widget.c (copie de travail)
@@ -593,6 +593,16 @@ update_separator_visibility (GdmChooserW
}
static void
+update_chooser_visibility (GdmChooserWidget *widget)
+{
+ if (gdm_chooser_widget_get_number_of_items (widget) > 0) {
+ gtk_widget_show (widget->priv->scrollable_widget);
+ } else {
+ gtk_widget_hide (widget->priv->scrollable_widget);
+ }
+}
+
+static void
set_inactive_items_visible (GdmChooserWidget *widget,
gboolean should_show)
{
@@ -1771,7 +1781,6 @@ gdm_chooser_widget_init (GdmChooserWidge
add_frame (widget);
widget->priv->scrollable_widget = gdm_scrollable_widget_new ();
- gtk_widget_show (widget->priv->scrollable_widget);
gtk_container_add (GTK_CONTAINER (widget->priv->frame_alignment),
widget->priv->scrollable_widget);
@@ -2055,6 +2064,8 @@ gdm_chooser_widget_add_item (GdmChooserW
-1);
move_cursor_to_top (widget);
+
+ update_chooser_visibility (widget);
}
void
@@ -2103,6 +2114,8 @@ gdm_chooser_widget_remove_item (GdmChoos
gtk_list_store_remove (widget->priv->list_store, &iter);
move_cursor_to_top (widget);
+
+ update_chooser_visibility (widget);
}
gboolean

View File

@ -0,0 +1,63 @@
--- trunk/gui/simple-greeter/gdm-greeter-login-window.c 2008/11/18 22:18:29 6599
+++ trunk/gui/simple-greeter/gdm-greeter-login-window.c 2009/01/14 22:59:37 6662
@@ -543,7 +543,6 @@
switch (number) {
case MODE_SELECTION:
- gtk_widget_set_size_request (GTK_WIDGET (login_window), -1, -1);
set_log_in_button_mode (login_window, LOGIN_BUTTON_HIDDEN);
show_widget (login_window, "cancel-button", FALSE);
@@ -568,9 +567,6 @@
default_name = NULL;
break;
case MODE_AUTHENTICATION:
- gtk_widget_set_size_request (GTK_WIDGET (login_window),
- GTK_WIDGET (login_window)->allocation.width,
- -1);
show_widget (login_window, "cancel-button", TRUE);
show_widget (login_window, "shutdown-button", FALSE);
show_widget (login_window, "restart-button", FALSE);
@@ -1656,16 +1652,22 @@
gdm_greeter_login_window_size_request (GtkWidget *widget,
GtkRequisition *requisition)
{
- int screen_w;
- int screen_h;
- GtkRequisition child_requisition;
+ int monitor;
+ GdkScreen *screen;
+ GtkRequisition child_requisition;
+ GdkRectangle area;
if (GTK_WIDGET_CLASS (gdm_greeter_login_window_parent_class)->size_request) {
GTK_WIDGET_CLASS (gdm_greeter_login_window_parent_class)->size_request (widget, requisition);
}
- screen_w = gdk_screen_get_width (gtk_widget_get_screen (widget));
- screen_h = gdk_screen_get_height (gtk_widget_get_screen (widget));
+ if (!GTK_WIDGET_REALIZED (widget)) {
+ return;
+ }
+
+ screen = gtk_widget_get_screen (widget);
+ monitor = gdk_screen_get_monitor_at_window (screen, widget->window);
+ gdk_screen_get_monitor_geometry (screen, monitor, &area);
gtk_widget_get_child_requisition (GTK_BIN (widget)->child, &child_requisition);
*requisition = child_requisition;
@@ -1676,8 +1678,12 @@
/* Make width be at least 33% screen width
* and height be at most 80% of screen height
*/
- requisition->width = MAX (requisition->width, .33 * screen_w);
- requisition->height = MIN (requisition->height, .80 * screen_h);
+ requisition->width = MAX (requisition->width, .33 * area.width);
+ requisition->height = MIN (requisition->height, .80 * area.height);
+
+ /* Don't ever shrink window width
+ */
+ requisition->width = MAX (requisition->width, widget->allocation.width);
}
static void

View File

@ -0,0 +1,49 @@
Index: gdm-2.24.0/daemon/gdm-session-worker-job.c
===================================================================
--- gdm-2.24.0.orig/daemon/gdm-session-worker-job.c
+++ gdm-2.24.0/daemon/gdm-session-worker-job.c
@@ -119,10 +119,36 @@ listify_hash (const char *key,
GPtrArray *env)
{
char *str;
+
+ if (value == NULL)
+ value = "";
+
str = g_strdup_printf ("%s=%s", key, value);
g_ptr_array_add (env, str);
}
+static void
+copy_environment_to_hash (GHashTable *hash)
+{
+ gchar **env_strv;
+ gint i;
+
+ env_strv = g_listenv ();
+
+ for (i = 0; env_strv [i]; i++) {
+ gchar *key = env_strv [i];
+ const gchar *value;
+
+ value = g_getenv (key);
+ if (!value)
+ continue;
+
+ g_hash_table_insert (hash, g_strdup (key), g_strdup (value));
+ }
+
+ g_strfreev (env_strv);
+}
+
static GPtrArray *
get_job_environment (GdmSessionWorkerJob *job)
{
@@ -133,6 +159,7 @@ get_job_environment (GdmSessionWorkerJob
/* create a hash table of current environment, then update keys has necessary */
hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+ copy_environment_to_hash (hash);
g_hash_table_insert (hash, g_strdup ("GDM_SESSION_DBUS_ADDRESS"), g_strdup (job->priv->server_address));

View File

@ -0,0 +1,36 @@
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index c1ac7cf..a5de412 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -149,6 +149,9 @@ typedef int (* GdmSessionWorkerPamNewMessagesFunc) (int,
const struct pam_message **,
struct pam_response **,
gpointer);
+static void on_saved_session_name_read (GdmSessionWorker *worker);
+static void on_saved_language_name_read (GdmSessionWorker *worker);
+static void on_saved_layout_name_read (GdmSessionWorker *worker);
G_DEFINE_TYPE (GdmSessionWorker, gdm_session_worker, G_TYPE_OBJECT)
@@ -617,6 +620,21 @@ attempt_to_load_user_settings (GdmSessionWorker *worker,
passwd_entry->pw_dir,
NULL);
+ /* These singal handlers should be disconnected after the loading,
+ * so that gdm_session_settings_set_* APIs don't cause the emitting
+ * of Saved*NameRead D-Bus signals any more.
+ */
+ g_signal_handlers_disconnect_by_func (worker->priv->user_settings,
+ G_CALLBACK (on_saved_session_name_read),
+ worker);
+
+ g_signal_handlers_disconnect_by_func (worker->priv->user_settings,
+ G_CALLBACK (on_saved_language_name_read),
+ worker);
+
+ g_signal_handlers_disconnect_by_func (worker->priv->user_settings,
+ G_CALLBACK (on_saved_layout_name_read),
+ worker);
seteuid (old_uid);
setegid (old_gid);
}

View File

@ -1,6 +1,6 @@
--- configure
+++ configure
@@ -32703,7 +32703,7 @@
--- configure.org 2008-12-29 09:24:05.000000000 +1100
+++ configure 2008-12-29 09:24:19.000000000 +1100
@@ -35527,7 +35527,7 @@ cat >>confdefs.h <<\_ACEOF
#define HAVE_SELINUX 1
_ACEOF
@ -8,15 +8,15 @@
+ EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux"
fi
#
--- configure.ac
+++ configure.ac
@@ -820,7 +820,7 @@
--- configure.ac.org 2008-12-29 09:25:17.000000000 +1100
+++ configure.ac 2008-12-29 09:25:22.000000000 +1100
@@ -873,7 +873,7 @@ if test "x$with_selinux" = "xyes" ; then
AC_CHECK_LIB(selinux,setexeccon,/bin/true)
AC_CHECK_LIB(selinux,is_selinux_enabled,/bin/true)
AC_DEFINE(HAVE_SELINUX)
AC_DEFINE(HAVE_SELINUX, 1, [Define if have selinux])
- EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux -lattr"
+ EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux"
fi
#
dnl ---------------------------------------------------------------------------

View File

@ -0,0 +1,28 @@
Index: gdm-2.24.0/daemon/gdm-session-worker.c
===================================================================
--- gdm-2.24.0.orig/daemon/gdm-session-worker.c
+++ gdm-2.24.0/daemon/gdm-session-worker.c
@@ -2395,7 +2395,10 @@ on_setup (GdmSessionWorker *worker,
const char *hostname;
dbus_bool_t res;
- /* FIXME: return error if not in NONE state */
+ if (worker->priv->state != GDM_SESSION_WORKER_STATE_NONE) {
+ g_debug ("GdmSessionWorker: ignoring spurious setup while in state %s", get_state_name (worker->priv->state));
+ return;
+ }
dbus_error_init (&error);
res = dbus_message_get_args (message,
@@ -2435,7 +2438,10 @@ on_setup_for_user (GdmSessionWorker *wor
const char *username;
dbus_bool_t res;
- /* FIXME: return error if not in NONE state */
+ if (worker->priv->state != GDM_SESSION_WORKER_STATE_NONE) {
+ g_debug ("GdmSessionWorker: ignoring spurious setup for user while in state %s", get_state_name (worker->priv->state));
+ return;
+ }
dbus_error_init (&error);
res = dbus_message_get_args (message,

View File

@ -16,16 +16,14 @@ Index: gdm-2.24.0/data/PostSession.in
===================================================================
--- gdm-2.24.0.orig/data/PostSession.in
+++ gdm-2.24.0/data/PostSession.in
@@ -1,5 +1,9 @@
@@ -1,3 +1,7 @@
#!/bin/sh
+if test -x /etc/X11/xdm/Xreset; then
+ exec /etc/X11/xdm/Xreset
+ exec /etc/X11/xdm/Xreset
+fi
+
PATH="@X_PATH@:$PATH:/bin:/usr/bin"
OLD_IFS=$IFS
exit 0
Index: gdm-2.24.0/data/Xsession.in
===================================================================
--- gdm-2.24.0.orig/data/Xsession.in

View File

@ -1,3 +1,85 @@
-------------------------------------------------------------------
Sat Jan 31 18:49:34 CET 2009 - vuntz@novell.com
- Add gdm-fix-locale-listing.patch: correctly list all locales so
that they appear in the language chooser. Fix bnc#446446.
-------------------------------------------------------------------
Sat Jan 31 15:08:24 CET 2009 - vuntz@novell.com
- Add gdm-propagate-env-to-jobs.patch: forward the environment to
gdm-session-worker to have translated PAM messages. Fix
bnc#440860.
-------------------------------------------------------------------
Sat Jan 31 14:52:14 CET 2009 - vuntz@novell.com
- Drop unneeded BuildRequires: docbook_4
- Remove check for old versions of openSUSE
- Don't pass non-existing --enable-secureremote flag to configure
-------------------------------------------------------------------
Fri Jan 30 03:39:57 CET 2009 - vuntz@novell.com
- Add gdm-session-worker-check-states.patch to fix bnc#470714. We
were handling late a setup signal, while we were already doing
something else.
-------------------------------------------------------------------
Thu Jan 29 23:26:08 CET 2009 - vuntz@novell.com
- Add gdm-accreditation-failed-log.patch to improve logging in the
case of accreditation failure.
-------------------------------------------------------------------
Wed Jan 28 01:58:28 CET 2009 - vuntz@novell.com
- Add gdm-login-window-size.patch to fix the login window size: the
width could be too small in various cases (eg, some pam
messages). Also needed for gdm-hide-lonely-other.patch.
- Add gdm-hide-lonely-other.patch to hide the Other item in the
user list in relevant cases, especially when we disable the user
list. Fix bnc#439894.
-------------------------------------------------------------------
Tue Jan 27 02:17:53 CET 2009 - vuntz@novell.com
- Manual merge with GNOME:Factory:Next.
- Drop gdm-fix-xdmcp.patch: fixed another way upstream.
- Add gdm-bnc468374-dbus-send-dest.patch to add send_destination in
the dbus policy. Fix bnc#468374.
-------------------------------------------------------------------
Thu Jan 22 17:25:27 EST 2009 - mxwu@novell.com
- Add gdm-selecting-desktop-environment.patch to select right
desktop environment (bnc#460691)
-------------------------------------------------------------------
Mon Jan 12 15:25:27 EST 2009 - mauro@suse.de
- Translations update.
-------------------------------------------------------------------
Mon Dec 29 08:38:31 EST 2008 - mboman@suse.de
- Update to version 2.25.2:
+ Fix focus issues in applet
+ Use text view instead of entry
+ Add support for a real automatic login
+ Redesign user switch applet
+ Make XDMCP work again
+ Add a bevel around the dialog
+ Remove capslock warning label
- Remove gdm-2.23.92-another-locale-fixup.patch. Fixed upstream
- Remove gdm-2.23.92-filter-dupes-from-lang-list.patch. Fixed upstream
- Remove gdm-2.23.92-fix-crash.patch. Fixed upstream.
- Remove gdm-fix-icon-scale.patch. Fixed upstream
- Remove gdm-autologin.patch. Fixed upstream
- Remove gdm-fix-pam-auditing.patch. Fixed upstream
- Comment out gdm-greeter-greater-ui.patch. Patch does not apply
due to massive changes in glade file. Needs to be redone completly.
-------------------------------------------------------------------
Thu Dec 4 23:47:59 CST 2008 - hpj@novell.com

178
gdm.spec
View File

@ -1,7 +1,7 @@
#
# spec file for package gdm (Version 2.24.0)
# spec file for package gdm (Version 2.25.2)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -21,7 +21,6 @@
Name: gdm
BuildRequires: PolicyKit-gnome-devel
BuildRequires: check-devel
BuildRequires: docbook_4
BuildRequires: fdupes
BuildRequires: gconf2-devel
BuildRequires: gnome-common
@ -31,15 +30,9 @@ BuildRequires: gnome-patch-translation
BuildRequires: intltool
BuildRequires: iso-codes-devel
BuildRequires: libglade2-devel
BuildRequires: libgnomeprintui-devel
BuildRequires: libgnomeui-devel
BuildRequires: libgnutls-devel
BuildRequires: librsvg-devel
BuildRequires: libselinux-devel
BuildRequires: libwnck-devel
BuildRequires: libxklavier-devel
BuildRequires: pam-devel
BuildRequires: perl-XML-Parser
BuildRequires: pwdutils
BuildRequires: scrollkeeper
BuildRequires: tcpd-devel
@ -50,14 +43,11 @@ BuildRequires: zenity
PreReq: /usr/sbin/groupadd
PreReq: /usr/sbin/useradd
PreReq: /usr/sbin/usermod
%if %suse_version < 1010
PreReq: %fillup_prereq
%endif
PreReq: %insserv_prereq
License: GPL v2 or later
Group: System/GUI/GNOME
Version: 2.24.0
Release: 15
Version: 2.25.2
Release: 1
Summary: The GNOME 2.x Display Manager
Source: %{name}-%{version}.tar.bz2
Source1: gdm.pamd
@ -75,29 +65,31 @@ Patch6: gdm-desktop-session-env-pam.patch
# PATCH-FIX-OPENSUSE gdm-suse-xsession.patch vuntz@novell.com -- Use the /etc/X11/xdm/* scripts
Patch7: gdm-suse-xsession.patch
Patch8: gdm-domain-logon.patch
# PATCH-FIX-UPSTREAM gdm-2.23.92-another-locale-fixup.patch jpr@novell.com -- From upstream/Fedora, canonicalize LANG variable
Patch9: gdm-2.23.92-another-locale-fixup.patch
# PATCH-FIX-UPSTREAM gdm-2.23.92-filter-dupes-from-lang-list.patch jpr@novell.com -- From upstream/Fedora, don't show the same language multiple times
Patch10: gdm-2.23.92-filter-dupes-from-lang-list.patch
# PATCH-FIX-UPSTREAM gdm-2.23.92-fix-crash.patch jpr@novell.com -- From upstream/Fedora, don't crash in the option widgets
Patch11: gdm-2.23.92-fix-crash.patch
# PATCH-FIX-UPSTREAM gdm-fix-icon-scale.patch vuntz@novell.com -- From upstream/Fedora: don't have a huge size for icons in the greeter
Patch12: gdm-fix-icon-scale.patch
# PATCH-FIX-OPENSUSE gdm-sysconfig-settings.patch bnc432360 hpj@novell.com -- Read autologin options from /etc/sysconfig/displaymanager
Patch13: gdm-sysconfig-settings.patch
# PATCH-FIX-UPSTREAM gdm-autologin.patch bnc436524 mmeeks@novell.com -- From upstream don't create the greeter when autologging it to save startup time
Patch14: gdm-autologin.patch
# PATCH-FIX-UPSTREAM gdm-greeter-greater-ui.patch bnc436431 bgo560508 vuntz@novell.com -- Improve the layout of the greeter. Note: the patch contains a patched glade file *and* the result glade file (for reference only, in case we need to rebase the patch)
# PATCH-NEEDS-REBASE gdm-greeter-greater-ui.patch bnc436431 bgo560508 vuntz@novell.com -- Improve the layout of the greeter. Note: the patch contains a patched glade file *and* the result glade file (for reference only, in case we need to rebase the patch) (was PATCH-FIX-UPSTREAM)
Patch15: gdm-greeter-greater-ui.patch
# PATCH-FIX-UPSTREAM gdm-fix-xdmcp.patch bnc441396 bgo561396 hpj@novell.com -- Make XDMCP work, patch from upstream bugzilla.
Patch16: gdm-fix-xdmcp.patch
# PATCH-FIX-UPSTREAM gdm-fix-pam-auditing.patch bnc436852 bgo557794 hpj@novell.com -- Make PAM auditing work on logout.
Patch17: gdm-fix-pam-auditing.patch
# PATCH-FIX-UPSTREAM gdm-always-reflect-keyboard-layout.patch bnc438159 bgo561771 hpj@novell.com -- Make keyboard selector not neglect to apply the selected keyboard in some situations.
Patch18: gdm-always-reflect-keyboard-layout.patch
# PATCH-FIX-OPENSUSE gdm-save-panel-space-on-low-resolutions.patch bnc449815 hpj@novell.com -- Hide clock and/or selector labels on low resolutions.
Patch19: gdm-save-panel-space-on-low-resolutions.patch
# PATCH-FIX-UPSTREAM gdm-selecting-desktop-environment.patch bnc460591 mxwu@novell.com -- Selecting the right desktop environment
Patch20: gdm-selecting-desktop-environment.patch
# PATCH-FIX-UPSTREAM gdm-login-window-size.patch vuntz@novell.com -- Patch taken from upstream svn to fix the login window size in some cases. Needed for gdm-hide-lonely-other.patch
Patch21: gdm-login-window-size.patch
# PATCH-FIX-UPSTREAM gdm-hide-lonely-other.patch bnc439894 bgo568323 vuntz@novell.com -- Hide Other in the user list when there's no user list
Patch22: gdm-hide-lonely-other.patch
# PATCH-FIX-UPSTREAM gdm-accreditation-failed-log.patch vuntz@novell.com -- Better logging for accreditation failed
Patch23: gdm-accreditation-failed-log.patch
# PATCH-FIX-UPSTREAM gdm-session-worker-check-states.patch bnc470714 vuntz@novell.com -- Make sure we have consistent states in gdm-session-worker
Patch24: gdm-session-worker-check-states.patch
# PATCH-FIX-UPSTREAM gdm-propagate-env-to-jobs.patch bnc440860 bgo568590 vuntz@novell.com -- Forward the environment to gdm-session-worker to have translated PAM messages
Patch25: gdm-propagate-env-to-jobs.patch
# PATCH-FIX-UPSTREAM gdm-fix-locale-listing.patch bnc446446 vuntz@novell.com -- Fix locale listing so that all locales are listed in the language chooser
Patch26: gdm-fix-locale-listing.patch
Patch28: gdm-X_SERVER.patch
# PATCH-FIX-UPSTREAM gdm-bnc468374-dbus-send-dest.patch bnc468374 bgo564767 vuntz@novell.com -- Patch taken from upstream to fix the potential dbus security issue with send_interface
Patch29: gdm-bnc468374-dbus-send-dest.patch
# PATCH-SUSE: enable SELinux
Patch60: gdm-selinux.patch
Url: http://www.gnome.org/
@ -167,18 +159,19 @@ Authors:
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14
%patch15 -p1
%patch16 -p1
%patch17 -p0
#%patch15 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p0
%patch23 -p1
%patch24 -p1
%patch25 -p1
%patch26 -p1
%patch28
%patch29 -p1
%patch60
%build
@ -191,8 +184,7 @@ export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
--with-at-spi-registryd-directory=%{_prefix}/lib/at-spi \
--with-selinux \
--enable-ipv6\
--disable-scrollkeeper\
--enable-secureremote
--disable-scrollkeeper
%__make %{?jobs:-j%jobs}
%install
@ -286,7 +278,59 @@ fi
%files lang -f %{name}.lang
%changelog
* Thu Dec 04 2008 hpj@novell.com
* Sat Jan 31 2009 vuntz@novell.com
- Add gdm-fix-locale-listing.patch: correctly list all locales so
that they appear in the language chooser. Fix bnc#446446.
* Sat Jan 31 2009 vuntz@novell.com
- Add gdm-propagate-env-to-jobs.patch: forward the environment to
gdm-session-worker to have translated PAM messages. Fix
bnc#440860.
* Sat Jan 31 2009 vuntz@novell.com
- Drop unneeded BuildRequires: docbook_4
- Remove check for old versions of openSUSE
- Don't pass non-existing --enable-secureremote flag to configure
* Fri Jan 30 2009 vuntz@novell.com
- Add gdm-session-worker-check-states.patch to fix bnc#470714. We
were handling late a setup signal, while we were already doing
something else.
* Thu Jan 29 2009 vuntz@novell.com
- Add gdm-accreditation-failed-log.patch to improve logging in the
case of accreditation failure.
* Wed Jan 28 2009 vuntz@novell.com
- Add gdm-login-window-size.patch to fix the login window size: the
width could be too small in various cases (eg, some pam
messages). Also needed for gdm-hide-lonely-other.patch.
- Add gdm-hide-lonely-other.patch to hide the Other item in the
user list in relevant cases, especially when we disable the user
list. Fix bnc#439894.
* Tue Jan 27 2009 vuntz@novell.com
- Manual merge with GNOME:Factory:Next.
- Drop gdm-fix-xdmcp.patch: fixed another way upstream.
- Add gdm-bnc468374-dbus-send-dest.patch to add send_destination in
the dbus policy. Fix bnc#468374.
* Thu Jan 22 2009 mxwu@novell.com
- Add gdm-selecting-desktop-environment.patch to select right
desktop environment (bnc#460691)
* Mon Jan 12 2009 mauro@suse.de
- Translations update.
* Mon Dec 29 2008 mboman@suse.de
- Update to version 2.25.2:
+ Fix focus issues in applet
+ Use text view instead of entry
+ Add support for a real automatic login
+ Redesign user switch applet
+ Make XDMCP work again
+ Add a bevel around the dialog
+ Remove capslock warning label
- Remove gdm-2.23.92-another-locale-fixup.patch. Fixed upstream
- Remove gdm-2.23.92-filter-dupes-from-lang-list.patch. Fixed upstream
- Remove gdm-2.23.92-fix-crash.patch. Fixed upstream.
- Remove gdm-fix-icon-scale.patch. Fixed upstream
- Remove gdm-autologin.patch. Fixed upstream
- Remove gdm-fix-pam-auditing.patch. Fixed upstream
- Comment out gdm-greeter-greater-ui.patch. Patch does not apply
due to massive changes in glade file. Needs to be redone completly.
* Fri Dec 05 2008 hpj@novell.com
- Update gdm-domain-logon.patch to omit undesirable domains
(bnc#450143).
* Wed Dec 03 2008 hpj@novell.com
@ -294,14 +338,14 @@ fi
gdm-vt-allocation-hack.patch. The new patch doesn't hardcode gdm
to VT7, but instead scans for a free VT starting with VT7
(bnc#434598).
* Sun Nov 30 2008 hpj@novell.com
* Mon Dec 01 2008 hpj@novell.com
- Update gdm-sysconfig-settings.patch to translate the name of the
configured system keymap into something libxklavier can
understand (bnc#446958).
* Sun Nov 30 2008 hpj@novell.com
* Mon Dec 01 2008 hpj@novell.com
- Update gdm-domain-logon.patch to make domain prefix logon work
when entering user names manually (bnc#450146).
* Sat Nov 29 2008 hpj@novell.com
* Sun Nov 30 2008 hpj@novell.com
- Add gdm-save-panel-space-on-low-resolutions.patch (bnc#449815).
* Fri Nov 21 2008 hpj@novell.com
- Add gdm-always-reflect-keyboard-layout.patch (bnc#438159).
@ -354,7 +398,7 @@ fi
family to FamilyWild.
* Mon Oct 06 2008 sbrabec@suse.cz
- Conflict with other branding providers (FATE#304881).
* Thu Oct 02 2008 mboman@suse.de
* Fri Oct 03 2008 mboman@suse.de
- Update to version 2.24.0:
+ Allow the build to succeed without a gdm user
+ Use Bourne shell syntax in Xsession.solaris
@ -533,7 +577,7 @@ fi
displays.
+ Build/configure fixes for Solaris.
+ Translation updates.
* Tue Nov 13 2007 hpj@suse.de
* Wed Nov 14 2007 hpj@suse.de
- Removed second --with-atspi-dir from configure.
- Added gdm-tab-triggers-enter.patch, which fixes Novell bug
[#334446].
@ -542,7 +586,7 @@ fi
(#337428)
- Updated gdm-xdm-sessions.patch to run again the /etc/X11/xdm
scripts (#304399)
* Thu Nov 08 2007 hpj@suse.de
* Fri Nov 09 2007 hpj@suse.de
- Pass the --with-atspi-dir= flag to configure so the
at-spi-registryd is started correctly. Fixes Novell bug #337428.
* Thu Oct 18 2007 maw@suse.de
@ -550,7 +594,7 @@ fi
- Add abuild.patch.
* Thu Oct 11 2007 sbrabec@suse.cz
- Removed bogus dependency on mDNSResponder.
* Sun Sep 23 2007 hpj@suse.de
* Mon Sep 24 2007 hpj@suse.de
- Added gdm-2.20.0-wait-for-restart.patch, which fixes Novell bug
[#326281].
* Thu Sep 20 2007 banderso@suse.de
@ -606,7 +650,7 @@ fi
* Wed Sep 05 2007 sbrabec@suse.cz
- Apply DISPLAYMANAGER_PASSWORD_LESS_LOGIN only for standard login,
not for autologin (#307566).
* Sun Sep 02 2007 hpj@suse.de
* Mon Sep 03 2007 hpj@suse.de
- Add gdm-2.19.7-pam-hide-password.patch, which fixes an upstream
bug where the user's password was being shown on screen (part of
BNC #302282).
@ -657,10 +701,10 @@ fi
- Split off a -lang subpackag
- Fix variable expansion in gdm-conf.patch (#255685)
- Remove earlygdm, replaced by earlyxdm (#285813)
* Fri Aug 03 2007 maw@suse.de
* Sat Aug 04 2007 maw@suse.de
- Use %%fdupes
- Uncomment out the rm in %%clean.
* Fri Aug 03 2007 hpj@suse.de
* Sat Aug 04 2007 hpj@suse.de
- Update to version 2.19.5.
- Fix up gdm-conf.patch.
- Fix up gdm-2.19.3-reset-pam.patch.
@ -740,7 +784,7 @@ fi
* Wed Mar 21 2007 hpj@suse.de
- Add gdm-2.17.7-vt-fallback.patch. This is a port of the fix for
https://bugzilla.novell.com/show_bug.cgi?id=206804
* Tue Mar 13 2007 maw@suse.de
* Wed Mar 14 2007 maw@suse.de
- Update to version 2.17.7
- Removeupstreamed gdm-autobuild-warning.patch,
gdm-bufferoverrun.patch
@ -748,10 +792,10 @@ fi
[#400698], #399486, #352263, #395790, #394421.
* Fri Mar 02 2007 sbrabec@suse.cz
- Do not own /usr/share/xsessions (#229172).
* Mon Feb 26 2007 hpj@suse.de
* Tue Feb 27 2007 hpj@suse.de
- Added gdm-2.13.0.4-audit-login.patch, which fixes Novell bug
[#234133] (GDM cannot log authentication attempts).
* Tue Feb 13 2007 hpj@suse.de
* Wed Feb 14 2007 hpj@suse.de
- Add gdm-trunk-string-literal-cmp.patch. Fixes #233655.
* Mon Feb 12 2007 sbrabec@suse.cz
- Fixed reversed interpretation of
@ -918,7 +962,7 @@ fi
- Update domain entry patch to default to the currently joined
Active Directory domain if there was no stored preference. Fixes
Novell bug #167344.
* Wed May 31 2006 hpj@suse.de
* Thu Jun 01 2006 hpj@suse.de
- Don't let any user configure GDM from the login screen if a
theme with user list is in effect. Fixes Novell bug #180219.
* Wed May 31 2006 dreveman@suse.de
@ -928,7 +972,7 @@ fi
- Do not display Japanese string in terminal, which doesn't support
it (#168736).
- Disabled beep on start (#174786).
* Thu May 18 2006 hpj@suse.de
* Fri May 19 2006 hpj@suse.de
- Made GDM use the more graphically intensive, but prettier,
gdmgreeter for remote logins. Fixes Novell bug #176661.
* Tue May 16 2006 sbrabec@suse.cz
@ -938,7 +982,7 @@ fi
* Fri May 12 2006 sbrabec@suse.cz
- Store value of PERMISSION_SECURITY by SuSEconfig in
gdm_sysconfig.conf (169639#c20).
* Mon May 08 2006 hpj@suse.de
* Tue May 09 2006 hpj@suse.de
- Made GDM use the "gdm" group instead of shadow. Fixes Novell bug
[#119651].
- Made use of the tab key work like pressing enter if there is no
@ -966,7 +1010,7 @@ fi
service, bug #158786.
* Sat Mar 11 2006 coolo@suse.de
- fix the only-show-in-gnome patch to patch the .desktop.in
* Mon Mar 06 2006 federico@novell.com
* Tue Mar 07 2006 federico@novell.com
- Fix installation of the earlygdm service; we were not calling
fillup_and_insserv with "displaymanager" for the configuration
filename.
@ -975,7 +1019,7 @@ fi
in PLUS (148468#c17).
* Tue Feb 28 2006 sbrabec@suse.cz
- Use kdelibs3-doc in BuildRequires for meinproc (#153635#c14).
* Fri Feb 24 2006 hpj@suse.de
* Sat Feb 25 2006 hpj@suse.de
- Add patch to fix tab keynav.
* Fri Feb 17 2006 sreeves@suse.de
- Update .desktop file (Name, GenericName, Comment, DocPath)
@ -1003,10 +1047,10 @@ fi
- Added patch to require root auth to halt or reboot.
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Wed Jan 18 2006 hpj@suse.de
* Thu Jan 19 2006 hpj@suse.de
- Updated the domain logon patch with numerous new features and
cosmetic fixes.
* Mon Jan 16 2006 hpj@suse.de
* Tue Jan 17 2006 hpj@suse.de
- Fixed a bug in logon code that prevented domain logons from
working. Updated domain logon patch.
* Fri Jan 13 2006 schwab@suse.de
@ -1026,7 +1070,7 @@ fi
- Patch from upstream b.g.o (#152906)
* Mon Oct 17 2005 gekker@suse.de
- Make gdm.conf %%config(noreplace)
* Thu Oct 13 2005 hpj@suse.de
* Fri Oct 14 2005 hpj@suse.de
- Updated xauthority-across-hostname-changes patch to use
XAUTHLOCALHOSTNAME environment variable.
* Thu Oct 13 2005 gekker@suse.de
@ -1045,7 +1089,7 @@ fi
- Update to version 2.8.0.3
- Remove upstreamed autologin patch
- Now installs .desktop files in correct location no need to move
* Fri Aug 19 2005 hpj@suse.de
* Sat Aug 20 2005 hpj@suse.de
- Make the default session option work on autologin; we now get GNOME.
* Tue Aug 16 2005 sbrabec@suse.cz
- Use gnome-screensaver instead of xscreensaver.
@ -1056,7 +1100,7 @@ fi
* Thu Aug 11 2005 gekker@suse.de
- Update to version 2.8.0.2
- Make 64bit clean
* Sat Jul 30 2005 jpr@suse.de
* Sun Jul 31 2005 jpr@suse.de
- turn on compatibility symlink for all products
* Tue Jul 05 2005 gekker@suse.de
- Update to version 2.8.0.1
@ -1116,13 +1160,13 @@ fi
- Cache gdm help and show gdm in khelpcenter.
* Mon Aug 16 2004 ro@suse.de
- fixed specfile
* Sun Aug 15 2004 shprasad@suse.de
* Mon Aug 16 2004 shprasad@suse.de
- Fixes bug #60020
Invalid username/passwd input doen't bring the password dialog
for timed login user.
* Fri Jul 30 2004 ro@suse.de
- fix spec file, list gdm-session-startkde.diff as patch
* Thu Jul 29 2004 shprasad@suse.de
* Fri Jul 30 2004 shprasad@suse.de
- Fixes bug #60867.
Shows the 'KDE' option when the user clicks on 'Session' at the
time of login.
@ -1181,7 +1225,7 @@ fi
- updated to version 2.4.1.6
* Mon Jul 28 2003 kukuk@suse.de
- Make sure /var/lib/gdm has correct permissions
* Thu Jul 24 2003 hhetter@suse.de
* Fri Jul 25 2003 hhetter@suse.de
- move capplets to correct position
- fix build
* Wed Jul 16 2003 sbrabec@suse.cz
@ -1218,7 +1262,7 @@ fi
- updated to 2.4.1.3 [GNOME 2.2.0]
* Fri Feb 07 2003 kukuk@suse.de
- Use pam_unix2.so instead of pam_unix.so
* Wed Jan 15 2003 ro@suse.de
* Thu Jan 16 2003 ro@suse.de
- use gtk2-devel-packages and libjpeg in neededforbuild
* Tue Jan 07 2003 sbrabec@suse.cz
- Update to version 2.4.1.0.