comparison libpurple/status.c @ 17427:7b8725f898b3

A patch from QuLogic to fix a bug with a zero timestamp for unidle notices in the system log. I've changed the patch to keep the current behavior for idle notices (i.e. to show the time when the buddy originally went idle). Fixes #1282
author Richard Laager <rlaager@wiktel.com>
date Sat, 02 Jun 2007 04:36:43 +0000
parents 27ee01859e9a
children ab6d2763b8d8
comparison
equal deleted inserted replaced
17426:27ee01859e9a 17427:7b8725f898b3
1273 1273
1274 void 1274 void
1275 purple_presence_set_idle(PurplePresence *presence, gboolean idle, time_t idle_time) 1275 purple_presence_set_idle(PurplePresence *presence, gboolean idle, time_t idle_time)
1276 { 1276 {
1277 gboolean old_idle; 1277 gboolean old_idle;
1278 time_t current_time;
1278 1279
1279 g_return_if_fail(presence != NULL); 1280 g_return_if_fail(presence != NULL);
1280 1281
1281 if (presence->idle == idle && presence->idle_time == idle_time) 1282 if (presence->idle == idle && presence->idle_time == idle_time)
1282 return; 1283 return;
1283 1284
1284 old_idle = presence->idle; 1285 old_idle = presence->idle;
1285 presence->idle = idle; 1286 presence->idle = idle;
1286 presence->idle_time = (idle ? idle_time : 0); 1287 presence->idle_time = (idle ? idle_time : 0);
1287 1288
1289 current_time = time(NULL);
1290
1288 if (purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_BUDDY) 1291 if (purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_BUDDY)
1289 { 1292 {
1290 time_t current_time = time(NULL);
1291
1292 update_buddy_idle(purple_presence_get_buddy(presence), presence, current_time, 1293 update_buddy_idle(purple_presence_get_buddy(presence), presence, current_time,
1293 old_idle, idle); 1294 old_idle, idle);
1294 } 1295 }
1295 else if(purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_ACCOUNT) 1296 else if (purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_ACCOUNT)
1296 { 1297 {
1297 PurpleAccount *account; 1298 PurpleAccount *account;
1298 PurpleConnection *gc; 1299 PurpleConnection *gc;
1299 PurplePluginProtocolInfo *prpl_info = NULL; 1300 PurplePluginProtocolInfo *prpl_info = NULL;
1300 1301
1310 1311
1311 if (idle) 1312 if (idle)
1312 msg = g_strdup_printf(_("+++ %s became idle"), purple_account_get_username(account)); 1313 msg = g_strdup_printf(_("+++ %s became idle"), purple_account_get_username(account));
1313 else 1314 else
1314 msg = g_strdup_printf(_("+++ %s became unidle"), purple_account_get_username(account)); 1315 msg = g_strdup_printf(_("+++ %s became unidle"), purple_account_get_username(account));
1316
1315 purple_log_write(log, PURPLE_MESSAGE_SYSTEM, 1317 purple_log_write(log, PURPLE_MESSAGE_SYSTEM,
1316 purple_account_get_username(account), 1318 purple_account_get_username(account),
1317 idle_time, msg); 1319 (idle ? idle_time : current_time), msg);
1318 g_free(msg); 1320 g_free(msg);
1319 } 1321 }
1320 } 1322 }
1321 1323
1322 gc = purple_account_get_connection(account); 1324 gc = purple_account_get_connection(account);
1324 if (gc != NULL && PURPLE_CONNECTION_IS_CONNECTED(gc) && 1326 if (gc != NULL && PURPLE_CONNECTION_IS_CONNECTED(gc) &&
1325 gc->prpl != NULL) 1327 gc->prpl != NULL)
1326 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); 1328 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
1327 1329
1328 if (prpl_info && prpl_info->set_idle) 1330 if (prpl_info && prpl_info->set_idle)
1329 prpl_info->set_idle(gc, (idle ? (time(NULL) - idle_time) : 0)); 1331 prpl_info->set_idle(gc, (idle ? (current_time - idle_time) : 0));
1330 } 1332 }
1331 } 1333 }
1332 1334
1333 void 1335 void
1334 purple_presence_set_login_time(PurplePresence *presence, time_t login_time) 1336 purple_presence_set_login_time(PurplePresence *presence, time_t login_time)