[telepathy-mission-control/master] McdMaster: add API to set lowmem and idle flags, and get lowmem flag

Simon McVittie simon.mcvittie at collabora.co.uk
Wed Jun 24 05:02:10 PDT 2009


The rest of the system flags don't seem to be used, so we can eventually
get rid of McdSystemFlags and the propagation through a tree of
McdMissions entirely, and just have two booleans on the Master.
---
 src/mcd-master.c |   67 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 src/mcd-master.h |    4 +++
 2 files changed, 65 insertions(+), 6 deletions(-)

diff --git a/src/mcd-master.c b/src/mcd-master.c
index 2d4213c..885355a 100644
--- a/src/mcd-master.c
+++ b/src/mcd-master.c
@@ -98,6 +98,8 @@ typedef struct _McdMasterPrivate
     GList *account_connections;
 
     gboolean is_disposed;
+    gboolean low_memory;
+    gboolean idle;
 } McdMasterPrivate;
 
 enum
@@ -441,16 +443,18 @@ _mcd_master_set_property (GObject *obj, guint prop_id,
 static void
 _mcd_master_set_flags (McdMission * mission, McdSystemFlags flags)
 {
-    McdSystemFlags idle_flag_old, idle_flag_new;
+    gboolean idle_flag_old;
     McdMasterPrivate *priv;
 
     g_return_if_fail (MCD_IS_MASTER (mission));
     priv = MCD_MASTER_PRIV (MCD_MASTER (mission));
 
-    idle_flag_old = MCD_MISSION_GET_FLAGS_MASKED (mission, MCD_SYSTEM_IDLE);
-    idle_flag_new = flags & MCD_SYSTEM_IDLE;
-    
-    if (idle_flag_old != idle_flag_new)
+    priv->low_memory = ((flags & MCD_SYSTEM_MEMORY_CONSERVED) != 0);
+
+    idle_flag_old = priv->idle;
+    priv->idle = ((flags & MCD_SYSTEM_IDLE) != 0);
+
+    if (idle_flag_old != priv->idle)
     {
         GHashTableIter iter;
         gpointer v;
@@ -462,7 +466,7 @@ _mcd_master_set_flags (McdMission * mission, McdSystemFlags flags)
         {
             McdAccount *account = MCD_ACCOUNT (v);
 
-            if (idle_flag_new)
+            if (priv->idle)
             {
                 TpConnectionPresenceType presence;
 
@@ -911,3 +915,54 @@ finish:
     return ret;
 }
 
+gboolean
+mcd_master_has_low_memory (McdMaster *master)
+{
+    McdMasterPrivate *priv = MCD_MASTER_PRIV (master);
+
+    return priv->low_memory;
+}
+
+/* For the moment, this is implemented in terms of McdSystemFlags. */
+void
+mcd_master_set_low_memory (McdMaster *master,
+                           gboolean low_memory)
+{
+    McdMission *mission = MCD_MISSION (master);
+    McdMasterPrivate *priv = MCD_MASTER_PRIV (master);
+
+    /* this will set priv->low_memory as a side-effect */
+    if (low_memory)
+    {
+        MCD_MISSION_SET_FLAGS_MASKED (mission, MCD_SYSTEM_MEMORY_CONSERVED);
+    }
+    else
+    {
+        MCD_MISSION_UNSET_FLAGS_MASKED (mission, MCD_SYSTEM_MEMORY_CONSERVED);
+    }
+
+    g_assert (priv->low_memory == low_memory);
+}
+
+/* For the moment, this is implemented in terms of McdSystemFlags. When
+ * McdSystemFlags are abolished, move the processing from set_flags to
+ * this function. */
+void
+mcd_master_set_idle (McdMaster *master,
+                     gboolean idle)
+{
+    McdMission *mission = MCD_MISSION (master);
+    McdMasterPrivate *priv = MCD_MASTER_PRIV (master);
+
+    /* this will set priv->idle as a side-effect */
+    if (idle)
+    {
+        MCD_MISSION_SET_FLAGS_MASKED (mission, MCD_SYSTEM_IDLE);
+    }
+    else
+    {
+        MCD_MISSION_UNSET_FLAGS_MASKED (mission, MCD_SYSTEM_IDLE);
+    }
+
+    g_assert (priv->idle == idle);
+}
diff --git a/src/mcd-master.h b/src/mcd-master.h
index e9e4720..9c2621d 100644
--- a/src/mcd-master.h
+++ b/src/mcd-master.h
@@ -81,5 +81,9 @@ void mcd_master_get_nth_account_connection (McdMaster *master, gint i,
 					    McdAccountConnectionFunc *func,
 					    gpointer *userdata);
 
+gboolean mcd_master_has_low_memory (McdMaster *master);
+void mcd_master_set_low_memory (McdMaster *master, gboolean low_memory);
+void mcd_master_set_idle (McdMaster *master, gboolean idle);
+
 G_END_DECLS
 #endif /* MCD_MASTER_H */
-- 
1.5.6.5




More information about the telepathy-commits mailing list