[Galago-commits] r2343 - in trunk/libgalago: . libgalago tests

galago-commits at freedesktop.org galago-commits at freedesktop.org
Thu Nov 24 17:24:32 PST 2005


Author: chipx86
Date: 2005-11-24 17:24:26 -0800 (Thu, 24 Nov 2005)
New Revision: 2343

Modified:
   trunk/libgalago/ChangeLog
   trunk/libgalago/libgalago/galago-core.c
   trunk/libgalago/libgalago/galago-presence.c
   trunk/libgalago/libgalago/galago-presence.h
   trunk/libgalago/libgalago/galago-status.c
   trunk/libgalago/tests/get-presence.c
   trunk/libgalago/tests/presence-feed-2.c
   trunk/libgalago/tests/presence-feed.c
Log:
Move to an idle model where you record the time the idle state began, instead of constantly updating the idle time length. This is untested due to lack of time, but should work :) Yay massive development trees.


Modified: trunk/libgalago/ChangeLog
===================================================================
--- trunk/libgalago/ChangeLog	2005-11-22 22:00:12 UTC (rev 2342)
+++ trunk/libgalago/ChangeLog	2005-11-25 01:24:26 UTC (rev 2343)
@@ -1,3 +1,16 @@
+Thu Nov 24 17:20:00 PST 2005  Christian Hammond <chipx86 at chipx86.com>
+
+	* libgalago/galago-core.c:
+	* libgalago/galago-presence.c:
+	* libgalago/galago-presence.h:
+	* libgalago/galago-status.c:
+	* tests/get-presence.c:
+	* tests/presence-feed-2.c:
+	* tests/presence-feed.c:
+	  - Move to an idle model where you record the time the idle state began,
+	    instead of constantly updating the idle time length. This is untested
+	    due to lack of time, but should work :) Yay massive development trees.
+
 Sun Nov 20 03:43:45 PST 2005  Christian Hammond <chipx86 at chipx86.com>
 
 	* libgalago/galago-status.c:

Modified: trunk/libgalago/libgalago/galago-core.c
===================================================================
--- trunk/libgalago/libgalago/galago-core.c	2005-11-22 22:00:12 UTC (rev 2342)
+++ trunk/libgalago/libgalago/galago-core.c	2005-11-25 01:24:26 UTC (rev 2343)
@@ -508,15 +508,13 @@
 		if (presence != NULL)
 		{
 			gboolean idle;
-			dbus_uint32_t idle_time = 0;
+			dbus_uint32_t idle_start_time;
 
 			dbus_message_iter_get_basic(&iter, &idle);
 			dbus_message_iter_next(&iter);
+			dbus_message_iter_get_basic(&iter, &idle_start_time);
 
-			if (idle)
-				dbus_message_iter_get_basic(&iter, &idle_time);
-
-			galago_presence_set_idle(presence, idle, idle_time);
+			galago_presence_set_idle(presence, idle, idle_start_time);
 		}
 	}
 	else if (dbus_message_is_signal(message, GALAGO_DBUS_PRESENCE_INTERFACE,

Modified: trunk/libgalago/libgalago/galago-presence.c
===================================================================
--- trunk/libgalago/libgalago/galago-presence.c	2005-11-22 22:00:12 UTC (rev 2342)
+++ trunk/libgalago/libgalago/galago-presence.c	2005-11-25 01:24:26 UTC (rev 2343)
@@ -31,7 +31,7 @@
 	GalagoAccount *account;
 
 	gboolean idle;
-	time_t idle_time;
+	time_t idle_start_time;
 
 	GList *statuses;
 
@@ -227,7 +227,7 @@
 	GalagoAccount *account;
 	GList *l, *statuses;
 	gboolean idle;
-	time_t idle_time = 0;
+	time_t idle_start_time = 0;
 
 	account = galago_dbus_message_iter_get_object(iter, GALAGO_TYPE_ACCOUNT);
 	dbus_message_iter_next(iter);
@@ -235,11 +235,11 @@
 	dbus_message_iter_get_basic(iter, &idle);
 	dbus_message_iter_next(iter);
 
-	dbus_message_iter_get_basic(iter, &idle_time);
+	dbus_message_iter_get_basic(iter, &idle_start_time);
 	dbus_message_iter_next(iter);
 
 	presence = galago_account_create_presence(account);
-	galago_presence_set_idle(presence, idle, idle_time);
+	galago_presence_set_idle(presence, idle, idle_start_time);
 
 	statuses = galago_dbus_message_iter_get_object_list(iter,
 														GALAGO_TYPE_STATUS);
@@ -305,22 +305,23 @@
  **************************************************************************/
 void
 galago_presence_set_idle(GalagoPresence *presence, gboolean idle,
-						 time_t idle_time)
+						 time_t idle_start_time)
 {
 	GalagoPerson *person;
 	GalagoAccount *account;
 
 	g_return_if_fail(presence != NULL);
 	g_return_if_fail(GALAGO_IS_PRESENCE(presence));
+	g_return_if_fail(idle_start_time > 0);
 
 	if (presence->priv->idle == idle &&
-		presence->priv->idle_time == idle_time)
+		presence->priv->idle_start_time == idle_start_time)
 	{
 		return;
 	}
 
 	presence->priv->idle = idle;
-	presence->priv->idle_time = (idle ? idle_time : 0);
+	presence->priv->idle_start_time = idle_start_time;
 
 	account = galago_presence_get_account(presence);
 	person  = galago_account_get_person(account);
@@ -330,11 +331,11 @@
 	{
 		galago_dbus_send_message(GALAGO_OBJECT(presence), "SetIdle",
 			galago_value_new(GALAGO_VALUE_TYPE_BOOLEAN, &idle, NULL),
-			galago_value_new(GALAGO_VALUE_TYPE_ULONG, &idle_time, NULL),
+			galago_value_new(GALAGO_VALUE_TYPE_ULONG, &idle_start_time, NULL),
 			NULL);
 	}
 
-	g_signal_emit(presence, signals[IDLE_CHANGED], 0, idle, idle_time);
+	g_signal_emit(presence, signals[IDLE_CHANGED], 0, idle, idle_start_time);
 	g_signal_emit(presence, signals[CHANGED], 0);
 }
 
@@ -543,9 +544,18 @@
 	g_return_val_if_fail(presence != NULL,             0);
 	g_return_val_if_fail(GALAGO_IS_PRESENCE(presence), 0);
 
-	return presence->priv->idle_time;
+	return time(NULL) - presence->priv->idle_start_time;
 }
 
+time_t
+galago_presence_get_idle_start_time(const GalagoPresence *presence)
+{
+	g_return_val_if_fail(presence != NULL,             0);
+	g_return_val_if_fail(GALAGO_IS_PRESENCE(presence), 0);
+
+	return presence->priv->idle_start_time;
+}
+
 gboolean
 galago_presence_is_discarded(const GalagoPresence *presence)
 {

Modified: trunk/libgalago/libgalago/galago-presence.h
===================================================================
--- trunk/libgalago/libgalago/galago-presence.h	2005-11-22 22:00:12 UTC (rev 2342)
+++ trunk/libgalago/libgalago/galago-presence.h	2005-11-25 01:24:26 UTC (rev 2343)
@@ -57,7 +57,7 @@
 
 	/* Signals */
 	void (*idle_changed)(GalagoPresence *presence, gboolean idle,
-						 time_t idle_time);
+						 time_t idle_start_time);
 	void (*status_added)(GalagoPresence *presence, GalagoStatus *status);
 	void (*status_removed)(GalagoPresence *presence, GalagoStatus *status);
 	void (*status_updated)(GalagoPresence *presence, GalagoStatus *status,
@@ -99,14 +99,14 @@
 GType galago_presence_get_type(void);
 
 /**
- * Sets the idle state on a presence.
+ * Sets the idle start time on a presence.
  *
  * @param presence  The presence.
  * @param idle      TRUE if the user is idle, or FALSE.
- * @param idle_time The optional idle time in seconds.
+ * @param idle_time The idle start time in seconds.
  */
 void galago_presence_set_idle(GalagoPresence *presence, gboolean idle,
-							  time_t idle_time);
+							  time_t idle_start_time);
 
 /**
  * Sets a list of statuses in a presence.
@@ -174,6 +174,15 @@
 time_t galago_presence_get_idle_time(const GalagoPresence *presence);
 
 /**
+ * Returns the time the presence was marked idle.
+ *
+ * @param presence The presence.
+ *
+ * @return The presence's start idle time.
+ */
+time_t galago_presence_get_idle_start_time(const GalagoPresence *presence);
+
+/**
  * Returns whether or not this is a discarded presence.
  *
  * A discarded presence signifies that all existing presence info for

Modified: trunk/libgalago/libgalago/galago-status.c
===================================================================
--- trunk/libgalago/libgalago/galago-status.c	2005-11-22 22:00:12 UTC (rev 2342)
+++ trunk/libgalago/libgalago/galago-status.c	2005-11-25 01:24:26 UTC (rev 2343)
@@ -127,7 +127,7 @@
 		g_param_spec_object("presence", "Presence",
 							"The presence object that this status belongs to",
 							GALAGO_TYPE_PRESENCE,
-							G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+							G_PARAM_READWRITE));
 
 	g_object_class_install_property(gobject_class, PROP_ID,
 		g_param_spec_string("id", "ID",
@@ -145,7 +145,7 @@
 		g_param_spec_boolean("exclusive", "Exclusive",
 							 "The status's exclusive state",
 							 FALSE,
-							 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+							 G_PARAM_READWRITE));
 }
 
 static void

Modified: trunk/libgalago/tests/get-presence.c
===================================================================
--- trunk/libgalago/tests/get-presence.c	2005-11-22 22:00:12 UTC (rev 2342)
+++ trunk/libgalago/tests/get-presence.c	2005-11-25 01:24:26 UTC (rev 2343)
@@ -90,8 +90,10 @@
 	}
 	else
 	{
-		printf("Idle:         %d\n", galago_presence_is_idle(presence));
-		printf("Idle Time:    %d\n",
+		printf("Idle:             %d\n", galago_presence_is_idle(presence));
+		printf("Idle Start Time:  %d\n",
+			   (int)galago_presence_get_idle_start_time(presence));
+		printf("Idle Time Length: %d\n",
 			   (int)galago_presence_get_idle_time(presence));
 
 		printf("Status(es):\n");

Modified: trunk/libgalago/tests/presence-feed-2.c
===================================================================
--- trunk/libgalago/tests/presence-feed-2.c	2005-11-22 22:00:12 UTC (rev 2342)
+++ trunk/libgalago/tests/presence-feed-2.c	2005-11-25 01:24:26 UTC (rev 2343)
@@ -55,7 +55,7 @@
 	contact  = galago_service_create_account(aim_service, person, "lottabs2");
 	presence = galago_account_create_presence(contact);
 
-	galago_presence_set_idle(presence, TRUE, 60 * 20);
+	galago_presence_set_idle(presence, TRUE, time(NULL));
 
 	galago_account_add_contact(account, contact);
 

Modified: trunk/libgalago/tests/presence-feed.c
===================================================================
--- trunk/libgalago/tests/presence-feed.c	2005-11-22 22:00:12 UTC (rev 2342)
+++ trunk/libgalago/tests/presence-feed.c	2005-11-25 01:24:26 UTC (rev 2343)
@@ -45,7 +45,7 @@
 	account  = galago_service_create_account(aim_service, me, "GalagoAIMUser");
 	presence = galago_account_create_presence(account);
 
-	galago_presence_set_idle(presence, TRUE, 60 * 5);
+	galago_presence_set_idle(presence, TRUE, time(NULL));
 
 	status = galago_status_new(GALAGO_STATUS_AWAY, "away", "Away", TRUE);
 	galago_status_set_attr_string(status, "message", "I'm eating dinner.");
@@ -57,7 +57,7 @@
 	contact  = galago_service_create_account(aim_service, person, "lottabs2");
 	presence = galago_account_create_presence(contact);
 
-	galago_presence_set_idle(presence, TRUE, 60 * 20);
+	galago_presence_set_idle(presence, TRUE, time(NULL));
 
 	galago_account_add_contact(account, contact);
 



More information about the galago-commits mailing list