diff options
author | Ben Chan <benchan@chromium.org> | 2018-08-14 14:53:04 -0700 |
---|---|---|
committer | Ben Chan <benchan@chromium.org> | 2018-08-18 13:34:06 -0700 |
commit | eb327b4203601a6c09f6369927325767391b86e7 (patch) | |
tree | dfbe394d5c4cfabdec8982260c867591b0f326a8 /libmm-glib/mm-pco.c | |
parent | 28e64d00181c83fd6cd420c46b6040f7b1afe5fb (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.c | 36 |
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) { |