aboutsummaryrefslogtreecommitdiff
path: root/libmm-glib/mm-pco.c
diff options
context:
space:
mode:
authorBen Chan <benchan@chromium.org>2018-08-14 14:53:04 -0700
committerBen Chan <benchan@chromium.org>2018-08-18 13:34:06 -0700
commiteb327b4203601a6c09f6369927325767391b86e7 (patch)
treedfbe394d5c4cfabdec8982260c867591b0f326a8 /libmm-glib/mm-pco.c
parent28e64d00181c83fd6cd420c46b6040f7b1afe5fb (diff)
libmm-glib,pco: add helpers for managing a list of MMPco
Diffstat (limited to 'libmm-glib/mm-pco.c')
-rw-r--r--libmm-glib/mm-pco.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/libmm-glib/mm-pco.c b/libmm-glib/mm-pco.c
index 07db363d..7ee347b0 100644
--- a/libmm-glib/mm-pco.c
+++ b/libmm-glib/mm-pco.c
@@ -224,6 +224,42 @@ mm_pco_to_variant (MMPco *self)
/*****************************************************************************/
+void
+mm_pco_list_free (GList *pco_list)
+{
+ g_list_free_full (pco_list, g_object_unref);
+}
+
+GList *
+mm_pco_list_add (GList *pco_list,
+ MMPco *pco)
+{
+ GList *iter;
+ guint32 session_id;
+
+ g_return_val_if_fail (pco != NULL, pco_list);
+
+ session_id = mm_pco_get_session_id (pco);
+
+ for (iter = g_list_first (pco_list); iter; iter = g_list_next (iter)) {
+ MMPco *iter_pco = iter->data;
+ guint32 iter_session_id = mm_pco_get_session_id (iter_pco);
+
+ if (iter_session_id < session_id)
+ continue;
+ else if (iter_session_id == session_id) {
+ iter->data = g_object_ref (pco);
+ g_object_unref (iter_pco);
+ return pco_list;
+ } else
+ break;
+ }
+
+ return g_list_insert_before (pco_list, iter, g_object_ref (pco));
+}
+
+/*****************************************************************************/
+
MMPco *
mm_pco_new (void)
{