From a0b97bdb5b2391619437f8ef3c9bae321a1227dd Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Wed, 7 Nov 2007 09:15:52 +0000 Subject: [PATCH 1/1] * optimization of modest_text_utils_get_display_date, inspired by pvanhoof's idea. pmo-trunk-r3658 --- src/modest-text-utils.c | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index 7d2806e..b0f547d 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -1105,33 +1105,23 @@ modest_text_utils_utf8_strcmp (const gchar* s1, const gchar *s2, gboolean insens const gchar* modest_text_utils_get_display_date (time_t date) { - time_t now; #define DATE_BUF_SIZE 64 - static const guint ONE_DAY = 24 * 60 * 60; /* seconds in one day */ static gchar date_buf[DATE_BUF_SIZE]; + + /* calculate the # of days since epoch for + * for today and for the date provided + * based on idea from pvanhoof */ + int day = time(NULL) / (24 * 60 * 60); + int date_day = date / (24 * 60 * 60); - gchar today_buf [DATE_BUF_SIZE]; - - modest_text_utils_strftime (date_buf, DATE_BUF_SIZE, "%x", date); + /* if it's today, show the time, if it's not today, show the date instead */ - now = time (NULL); + if (day == date_day) /* is the date today? */ + modest_text_utils_strftime (date_buf, DATE_BUF_SIZE, "%X", date); + else + modest_text_utils_strftime (date_buf, DATE_BUF_SIZE, "%x", date); - /* we check if the date is within the last 24h, if not, we don't - * have to do the extra, expensive strftime, which was very visible - * in the profiles. - */ - if (abs(now - date) < ONE_DAY) { - - /* it's within the last 24 hours, but double check */ - /* use the localized dates */ - modest_text_utils_strftime (today_buf, DATE_BUF_SIZE, "%x", now); - - /* if it's today, use the time instead */ - if (strcmp (date_buf, today_buf) == 0) - modest_text_utils_strftime (date_buf, DATE_BUF_SIZE, "%X", date); - } - - return date_buf; + return date_buf; /* this is a static buffer, don't free! */ } -- 1.7.9.5