diff options
author | Denis Kenzior <denkenz@gmail.com> | 2009-08-07 16:04:41 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2009-08-07 16:14:40 -0500 |
commit | eae2f2b3fb059a3e854edfd3c7b1869328eec60a (patch) | |
tree | bd852a5256cfdafae043c19aee88915163c7823e /src | |
parent | f4037d77f7f0d5a6a9b29794d1651a60d1766806 (diff) | |
download | ofono-eae2f2b3fb059a3e854edfd3c7b1869328eec60a.tar.bz2 |
Use g_source instead of flag for call list changes
Diffstat (limited to 'src')
-rw-r--r-- | src/voicecall.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/voicecall.c b/src/voicecall.c index bfe3fbcb..f0ffb399 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_CALL_LIST 0x4 #define VOICECALLS_FLAG_UPDATING_MPTY_CALL_LIST 0x8 #define MAX_VOICE_CALLS 16 @@ -53,6 +52,7 @@ struct voicecalls_data { struct ofono_voicecall_ops *ops; int flags; DBusMessage *pending; + gint emit_calls_source; }; struct voicecall { @@ -485,6 +485,11 @@ static void voicecalls_destroy(gpointer userdata) struct voicecalls_data *calls = modem->voicecalls; GSList *l; + if (calls->emit_calls_source) { + g_source_remove(calls->emit_calls_source); + calls->emit_calls_source = 0; + } + for (l = calls->call_list; l; l = l->next) voicecall_dbus_unregister(modem, l->data); @@ -1143,8 +1148,7 @@ static gboolean real_emit_call_list_changed(void *data) g_strfreev(objpath_list); - ofono_debug("Resetting updating flag"); - voicecalls->flags &= ~VOICECALLS_FLAG_UPDATING_CALL_LIST; + voicecalls->emit_calls_source = 0; return FALSE; } @@ -1154,10 +1158,9 @@ static void emit_call_list_changed(struct ofono_modem *modem) #ifdef DELAY_EMIT struct voicecalls_data *calls = modem->voicecalls; - if (!(calls->flags & VOICECALLS_FLAG_UPDATING_CALL_LIST)) { - calls->flags |= VOICECALLS_FLAG_UPDATING_CALL_LIST; - g_timeout_add(0, real_emit_call_list_changed, modem); - } + if (calls->emit_calls_source == 0) + calls->emit_calls_source = + g_timeout_add(0, real_emit_call_list_changed, modem); #else real_emit_call_list_changed(modem); #endif |