summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2009-08-07 16:07:40 -0500
committerDenis Kenzior <denkenz@gmail.com>2009-08-07 16:14:46 -0500
commit44e56bf752338ae62c3e20c2576461886ff9a8d0 (patch)
tree62b0b4cb6874367c3fda4378e1109ee7760b0e2e
parenteae2f2b3fb059a3e854edfd3c7b1869328eec60a (diff)
downloadofono-44e56bf752338ae62c3e20c2576461886ff9a8d0.tar.bz2
Use g_source instead of flag for mpty list changes
-rw-r--r--src/voicecall.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/voicecall.c b/src/voicecall.c
index f0ffb399..32f76c85 100644
--- a/src/voicecall.c
+++ b/src/voicecall.c
@@ -41,7 +41,6 @@
#define VOICECALLS_FLAG_PENDING 0x1
#define VOICECALLS_FLAG_MULTI_RELEASE 0x2
-#define VOICECALLS_FLAG_UPDATING_MPTY_CALL_LIST 0x8
#define MAX_VOICE_CALLS 16
@@ -53,6 +52,7 @@ struct voicecalls_data {
int flags;
DBusMessage *pending;
gint emit_calls_source;
+ gint emit_multi_source;
};
struct voicecall {
@@ -490,6 +490,11 @@ static void voicecalls_destroy(gpointer userdata)
calls->emit_calls_source = 0;
}
+ if (calls->emit_multi_source) {
+ g_source_remove(calls->emit_multi_source);
+ calls->emit_multi_source = 0;
+ }
+
for (l = calls->call_list; l; l = l->next)
voicecall_dbus_unregister(modem, l->data);
@@ -1181,8 +1186,8 @@ static gboolean real_emit_multiparty_call_list_changed(void *data)
&objpath_list);
g_strfreev(objpath_list);
-
- voicecalls->flags &= ~VOICECALLS_FLAG_UPDATING_MPTY_CALL_LIST;
+
+ voicecalls->emit_multi_source = 0;
return FALSE;
}
@@ -1192,9 +1197,9 @@ static void emit_multiparty_call_list_changed(struct ofono_modem *modem)
#ifdef DELAY_EMIT
struct voicecalls_data *calls = modem->voicecalls;
- if (!(calls->flags & VOICECALLS_FLAG_UPDATING_MPTY_CALL_LIST)) {
- calls->flags |= VOICECALLS_FLAG_UPDATING_MPTY_CALL_LIST;
- g_timeout_add(0, real_emit_multiparty_call_list_changed, modem);
+ if (calls->emit_multi_source == 0)
+ calls->emit_multi_source = g_timeout_add(0,
+ real_emit_multiparty_call_list_changed, modem);
}
#else
real_emit_multiparty_call_list_changed(modem);