[balsa/replace-libbalsa-mailbox-local-load-messages] Drop libbalsa_mailbox_local_load_messages



commit 50aa6ed39b4e0d8d36a776e2cf26a6927e948f76
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Mon Mar 9 21:25:13 2020 -0400

    Drop libbalsa_mailbox_local_load_messages
    
    Remove libbalsa_mailbox_local_load_messages from the API, and
    replace it with LibBalsaMailbox::check virtual method.
    
    * libbalsa/mailbox_local.c (libbalsa_mailbox_local_class_init),
    (lbml_load_messages_idle_cb), (libbalsa_mailbox_local_check),
    (libbalsa_mailbox_local_set_threading):
    * libbalsa/mailbox_local.h:
    * libbalsa/mailbox_maildir.c (libbalsa_mailbox_maildir_check):
    * libbalsa/mailbox_mbox.c (libbalsa_mailbox_mbox_check):
    * libbalsa/mailbox_mh.c (libbalsa_mailbox_mh_check):

 ChangeLog                  | 13 +++++++++++++
 libbalsa/mailbox_local.c   | 28 +++++++++++++++-------------
 libbalsa/mailbox_local.h   |  2 --
 libbalsa/mailbox_maildir.c |  5 +++--
 libbalsa/mailbox_mbox.c    |  4 +++-
 libbalsa/mailbox_mh.c      |  5 +++--
 6 files changed, 37 insertions(+), 20 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index ccfb3c6ba..0a847f519 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2020-03-09  Peter Bloomfield  <pbloomfield bellsouth net>
+
+       Remove libbalsa_mailbox_local_load_messages from the API, and
+       replace it with LibBalsaMailbox::check virtual method.
+
+       * libbalsa/mailbox_local.c (libbalsa_mailbox_local_class_init),
+       (lbml_load_messages_idle_cb), (libbalsa_mailbox_local_check),
+       (libbalsa_mailbox_local_set_threading):
+       * libbalsa/mailbox_local.h:
+       * libbalsa/mailbox_maildir.c (libbalsa_mailbox_maildir_check):
+       * libbalsa/mailbox_mbox.c (libbalsa_mailbox_mbox_check):
+       * libbalsa/mailbox_mh.c (libbalsa_mailbox_mh_check):
+
 2020-03-06  Peter Bloomfield  <pbloomfield bellsouth net>
 
        mailbox: Make cache-message a class method
diff --git a/libbalsa/mailbox_local.c b/libbalsa/mailbox_local.c
index 9793750af..968102bcb 100644
--- a/libbalsa/mailbox_local.c
+++ b/libbalsa/mailbox_local.c
@@ -126,6 +126,7 @@ static gboolean lbml_set_threading_idle_cb(LibBalsaMailboxLocal *local);
 static void libbalsa_mailbox_local_cache_message(LibBalsaMailbox * mailbox,
                                                  guint             msgno,
                                                  LibBalsaMessage * message);
+static void libbalsa_mailbox_local_check(LibBalsaMailbox *mailbox);
 
 /* LibBalsaMailboxLocal class method: */
 static void lbm_local_real_remove_files(LibBalsaMailboxLocal * local);
@@ -182,6 +183,8 @@ libbalsa_mailbox_local_class_init(LibBalsaMailboxLocalClass * klass)
         libbalsa_mailbox_local_test_can_reach;
     libbalsa_mailbox_class->cache_message =
         libbalsa_mailbox_local_cache_message;
+    libbalsa_mailbox_class->check =
+        libbalsa_mailbox_local_check;
 
     klass->check_files  = NULL;
     klass->set_path     = NULL;
@@ -1080,17 +1083,18 @@ lbml_load_messages_idle_cb(LibBalsaMailbox * mailbox)
     }
 
     lastno = libbalsa_mailbox_total_messages(mailbox);
-    msgno = priv->msgno;
-    new_messages = lastno - msgno;
+    new_messages = 0;
     lastn = g_node_last_child(msg_tree);
     get_info = LIBBALSA_MAILBOX_LOCAL_GET_CLASS(local)->get_info;
-    while (++msgno <= lastno){
+    for (msgno = 1; msgno <= lastno; msgno++) {
         LibBalsaMailboxLocalMessageInfo *msg_info = get_info(local, msgno);
 
-       libbalsa_mailbox_local_load_message(local, &lastn, msgno, msg_info);
-
-       if (msg_info->message)
-            lbm_local_cache_message(local, msgno, msg_info->message);
+        if (!msg_info->loaded) {
+            ++new_messages;
+            libbalsa_mailbox_local_load_message(local, &lastn, msgno, msg_info);
+            if (msg_info->message != NULL)
+                lbm_local_cache_message(local, msgno, msg_info->message);
+        }
     }
     priv->messages_loaded = TRUE;
 
@@ -1105,9 +1109,8 @@ lbml_load_messages_idle_cb(LibBalsaMailbox * mailbox)
     return FALSE;
 }
 
-void
-libbalsa_mailbox_local_load_messages(LibBalsaMailbox *mailbox,
-                                     guint msgno)
+static void
+libbalsa_mailbox_local_check(LibBalsaMailbox *mailbox)
 {
     LibBalsaMailboxLocal *local = (LibBalsaMailboxLocal *) mailbox;
     LibBalsaMailboxLocalPrivate *priv =
@@ -1117,8 +1120,7 @@ libbalsa_mailbox_local_load_messages(LibBalsaMailbox *mailbox,
 
     libbalsa_lock_mailbox(mailbox);
     priv->messages_loaded = FALSE;
-    if (!priv->load_messages_id) {
-        priv->msgno = msgno;
+    if (priv->load_messages_id == 0) {
         priv->load_messages_id =
             g_idle_add((GSourceFunc) lbml_load_messages_idle_cb, mailbox);
     }
@@ -1229,7 +1231,7 @@ libbalsa_mailbox_local_set_threading(LibBalsaMailbox * mailbox,
             }
             if (!ok)
                 return; /* Something bad happened */
-            libbalsa_mailbox_local_load_messages(mailbox, total);
+            libbalsa_mailbox_local_check(mailbox);
         }
 
 #if defined(DEBUG_LOADING_AND_THREADING)
diff --git a/libbalsa/mailbox_local.h b/libbalsa/mailbox_local.h
index 562227a38..ab2d25285 100644
--- a/libbalsa/mailbox_local.h
+++ b/libbalsa/mailbox_local.h
@@ -71,8 +71,6 @@ gint libbalsa_mailbox_local_set_path(LibBalsaMailboxLocal * mailbox,
 #define libbalsa_mailbox_local_get_path(local) \
        (libbalsa_mailbox_get_url((LibBalsaMailbox*)local)+7)
 
-void libbalsa_mailbox_local_load_messages(LibBalsaMailbox * mailbox,
-                                         guint last_msgno);
 void libbalsa_mailbox_local_msgno_removed(LibBalsaMailbox * mailbox,
                                          guint msgno);
 void libbalsa_mailbox_local_remove_files(LibBalsaMailboxLocal *mailbox);
diff --git a/libbalsa/mailbox_maildir.c b/libbalsa/mailbox_maildir.c
index b5d7651fe..f9c985f2c 100644
--- a/libbalsa/mailbox_maildir.c
+++ b/libbalsa/mailbox_maildir.c
@@ -580,9 +580,10 @@ libbalsa_mailbox_maildir_check(LibBalsaMailbox * mailbox)
             libbalsa_message_set_msgno(msg_info->local_info.message, msgno);
     }
 
-    msgno = mdir->msgno_2_msg_info->len;
     lbm_maildir_parse_subdirs(mdir);
-    libbalsa_mailbox_local_load_messages(mailbox, msgno);
+
+    if (LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_maildir_parent_class)->check != NULL)
+        LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_maildir_parent_class)->check(mailbox);
 }
 
 static void
diff --git a/libbalsa/mailbox_mbox.c b/libbalsa/mailbox_mbox.c
index bbf3597c3..9e00b4602 100644
--- a/libbalsa/mailbox_mbox.c
+++ b/libbalsa/mailbox_mbox.c
@@ -1074,7 +1074,9 @@ libbalsa_mailbox_mbox_check(LibBalsaMailbox * mailbox)
 #endif
     libbalsa_mime_stream_shared_unlock(mbox_stream);
     mbox_unlock(mailbox, mbox_stream);
-    libbalsa_mailbox_local_load_messages(mailbox, msgno);
+
+    if (LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_mbox_parent_class)->check != NULL)
+        LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_mbox_parent_class)->check(mailbox);
 }
 
 static void
diff --git a/libbalsa/mailbox_mh.c b/libbalsa/mailbox_mh.c
index efe183a83..e7846f6cc 100644
--- a/libbalsa/mailbox_mh.c
+++ b/libbalsa/mailbox_mh.c
@@ -676,9 +676,10 @@ libbalsa_mailbox_mh_check(LibBalsaMailbox * mailbox)
            libbalsa_message_set_msgno(msg_info->local_info.message, msgno);
     }
 
-    msgno = mh->msgno_2_msg_info->len;
     lbm_mh_parse_both(mh);
-    libbalsa_mailbox_local_load_messages(mailbox, msgno);
+
+    if (LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_mh_parent_class)->check != NULL)
+        LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_mh_parent_class)->check(mailbox);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]