diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2013-07-15 22:38:11 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2013-07-18 00:08:46 +0800 |
commit | c36aa6b7498ac73a77624533516b010f5701f08b (patch) | |
tree | 8fbe15ebb84ad3e5ea1785bf203c09bddc17d803 /mail/e-mail-backend.c | |
parent | 4de572679748a0586b9a9c3bf34c40ea5102e826 (diff) | |
download | gsoc2013-evolution-c36aa6b7498ac73a77624533516b010f5701f08b.tar.gz gsoc2013-evolution-c36aa6b7498ac73a77624533516b010f5701f08b.tar.zst gsoc2013-evolution-c36aa6b7498ac73a77624533516b010f5701f08b.zip |
Add mail_folder_cache_ref_folder().
Replaces mail_folder_cache_get_folder_from_uri().
Returns the CamelFolder for the CamelStore and folder name if available,
or else NULL if a CamelFolder instance is not yet cached. This function
does not block.
Diffstat (limited to 'mail/e-mail-backend.c')
-rw-r--r-- | mail/e-mail-backend.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c index d1ca660ab7..c2952daffd 100644 --- a/mail/e-mail-backend.c +++ b/mail/e-mail-backend.c @@ -673,35 +673,30 @@ mail_backend_folder_changed_cb (MailFolderCache *folder_cache, EMEvent *event = em_event_peek (); EMEventTargetFolder *target; EMFolderTreeModel *model; + CamelFolder *folder; gchar *folder_uri; gint folder_type; CamelFolderInfoFlags flags = 0; folder_uri = e_mail_folder_uri_build (store, folder_name); - if (folder_uri != NULL) { - CamelFolder *folder = NULL; - - if (mail_folder_cache_get_folder_from_uri ( - folder_cache, folder_uri, &folder)) { - if (folder != NULL && - !mail_folder_cache_get_folder_info_flags ( - folder_cache, folder, &flags)) { - g_free (folder_uri); - g_return_if_reached (); - } - } - - if (folder != NULL) - g_object_unref (folder); + folder = mail_folder_cache_ref_folder ( + folder_cache, store, folder_name); + if (folder != NULL) { + /* XXX Need to rethink this API. Why should we + * need the CamelFolder instance just to get + * folder flags? The flags are more readily + * available than the CamelFolder instance. */ + mail_folder_cache_get_folder_info_flags ( + folder_cache, folder, &flags); + g_object_unref (folder); } target = em_event_target_new_folder ( event, store, folder_uri, new_messages, msg_uid, msg_sender, msg_subject); - if (folder_uri) - g_free (folder_uri); + g_free (folder_uri); folder_type = (flags & CAMEL_FOLDER_TYPE_MASK); target->is_inbox = (folder_type == CAMEL_FOLDER_TYPE_INBOX); |