diff options
author | Denis Kenzior <denkenz@gmail.com> | 2009-08-07 16:07:40 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2009-08-07 16:14:46 -0500 |
commit | 44e56bf752338ae62c3e20c2576461886ff9a8d0 (patch) | |
tree | 62b0b4cb6874367c3fda4378e1109ee7760b0e2e | |
parent | eae2f2b3fb059a3e854edfd3c7b1869328eec60a (diff) | |
download | ofono-44e56bf752338ae62c3e20c2576461886ff9a8d0.tar.bz2 |
Use g_source instead of flag for mpty list changes
-rw-r--r-- | src/voicecall.c | 17 |
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); |