source:
proiecte/PPPP/gdm/debian/patches/13_cache_ck_history.patch
@
141
Last change on this file since 141 was 134, checked in by , 14 years ago | |
---|---|
File size: 4.1 KB |
-
gui/simple-greeter/Makefile.am
# # Description: Cache the result of ck-history so greeter shows user list immediately after login # Ubuntu: https://bugs.edge.launchpad.net/ubuntu/karmic/+source/gdm/+bug/400863 # Upstream: http://bugzilla.gnome.org/show_bug.cgi?id=594344 # diff --git a/gui/simple-greeter/Makefile.am b/gui/simple-greeter/Makefile.am index b36aa28..901a71b 100644
a b AM_CPPFLAGS = \ 10 10 -DDMCONFDIR=\""$(dmconfdir)"\" \ 11 11 -DGDMCONFDIR=\"$(gdmconfdir)\" \ 12 12 -DDATADIR=\""$(datadir)"\" \ 13 -DCACHEDIR=\""$(GDM_WORKING_DIR)/.cache"\" \ 13 14 -DSYSCONFDIR=\""$(sysconfdir)"\" \ 14 15 -DLIBLOCALEDIR=\""$(prefix)/lib/locale"\" \ 15 16 -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ -
gui/simple-greeter/gdm-user-manager.c
diff --git a/gui/simple-greeter/gdm-user-manager.c b/gui/simple-greeter/gdm-user-manager.c index 6c91b3b..3fb8423 100644
a b 99 99 "pcap", \ 100 100 NULL } 101 101 102 #define LOGIN_CACHE_FILE CACHEDIR "/login_frequency.cache" 103 102 104 struct GdmUserManagerPrivate 103 105 { 104 106 GHashTable *users; … … struct GdmUserManagerPrivate 116 118 guint ck_history_id; 117 119 118 120 guint8 users_dirty : 1; 121 guint8 loaded_cache : 1; 122 guint8 loading_users : 1; 119 123 }; 120 124 121 125 enum { … … ck_history_watch (GIOChannel *source, 1274 1278 } 1275 1279 1276 1280 if (done) { 1277 g_signal_emit (G_OBJECT (manager), signals[USERS_LOADED], 0); 1281 FILE *fp; 1282 1283 /* Cache login counts */ 1284 fp = fopen (LOGIN_CACHE_FILE, "w"); 1285 if (fp != NULL) { 1286 GHashTableIter iter; 1287 gpointer value; 1288 1289 g_hash_table_iter_init (&iter, manager->priv->users); 1290 while (g_hash_table_iter_next (&iter, NULL, &value)) { 1291 GdmUser *user = (GdmUser *) value; 1292 fprintf (fp, "%s %lu\n", 1293 gdm_user_get_user_name (user), 1294 gdm_user_get_login_frequency (user)); 1295 } 1296 fclose (fp); 1297 } 1298 else 1299 g_warning ("Unable to write to login cache file: %s", LOGIN_CACHE_FILE); 1300 1301 if (manager->priv->loading_users) { 1302 g_signal_emit (G_OBJECT (manager), signals[USERS_LOADED], 0); 1303 manager->priv->loading_users = FALSE; 1304 } 1278 1305 1279 1306 manager->priv->ck_history_id = 0; 1280 1307 return FALSE; … … reload_passwd (GdmUserManager *manager) 1472 1499 } 1473 1500 1474 1501 static void 1502 load_login_frequency_cache (GdmUserManager *manager) 1503 { 1504 GIOChannel *channel; 1505 gchar *line; 1506 1507 channel = g_io_channel_new_file (LOGIN_CACHE_FILE, "r", NULL); 1508 if (channel == NULL) 1509 return; 1510 1511 while (g_io_channel_read_line (channel, &line, NULL, NULL, NULL) == G_IO_STATUS_NORMAL) { 1512 process_ck_history_line (manager, line); 1513 g_free (line); 1514 } 1515 1516 g_io_channel_close (channel); 1517 1518 if (manager->priv->loading_users) { 1519 g_signal_emit (G_OBJECT (manager), signals[USERS_LOADED], 0); 1520 manager->priv->loading_users = FALSE; 1521 } 1522 } 1523 1524 static void 1475 1525 reload_users (GdmUserManager *manager) 1476 1526 { 1527 if (!manager->priv->loaded_cache) { 1528 load_login_frequency_cache (manager); 1529 manager->priv->loaded_cache = TRUE; 1530 } 1477 1531 reload_ck_history (manager); 1478 1532 reload_passwd (manager); 1479 1533 } … … queue_reload_users (GdmUserManager *manager) 1495 1549 } 1496 1550 1497 1551 g_signal_emit (G_OBJECT (manager), signals[LOADING_USERS], 0); 1552 manager->priv->loading_users = TRUE; 1498 1553 manager->priv->reload_id = g_idle_add ((GSourceFunc)reload_users_timeout, manager); 1499 1554 } 1500 1555
Note: See TracBrowser
for help on using the repository browser.