From 2dac10e1cb2d86e88dffe67569888bb9c110be9d Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Tue, 11 Sep 2012 22:31:44 -0500 Subject: sms: Optimize behavior of previous commit The previous commit fixed the bug, however performing a linear-search through the entire tx-queue is quite wasteful. The current usage pattern is to always modify the entry at the tail of the queue, so optimize. --- src/sms.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/sms.c b/src/sms.c index 743f725e..e7e44321 100644 --- a/src/sms.c +++ b/src/sms.c @@ -2115,14 +2115,16 @@ int __ofono_sms_txq_set_submit_notify(struct ofono_sms *sms, ofono_destroy_func destroy) { GList *l; - struct tx_queue_entry *entry; + struct tx_queue_entry *entry = g_queue_peek_tail(sms->txq); - l = g_queue_find_custom(sms->txq, uuid, entry_compare_by_uuid); + if (memcmp(&entry->uuid, uuid, sizeof(entry->uuid))) { + l = g_queue_find_custom(sms->txq, uuid, entry_compare_by_uuid); - if (l == NULL) - return -ENOENT; + if (l == NULL) + return -ENOENT; - entry = l->data; + entry = l->data; + } tx_queue_entry_set_submit_notify(entry, cb, data, destroy); -- cgit v1.2.3