Use g_source instead of flag for mpty list changes

This commit is contained in:
Denis Kenzior 2009-08-07 16:07:40 -05:00
parent eae2f2b3fb
commit 44e56bf752
1 changed files with 11 additions and 6 deletions

View File

@ -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);