aboutsummaryrefslogtreecommitdiffstats
path: root/camel
diff options
context:
space:
mode:
Diffstat (limited to 'camel')
-rw-r--r--camel/ChangeLog11
-rw-r--r--camel/providers/imap4/camel-imap4-summary.c12
-rw-r--r--camel/providers/imap4/camel-imap4-summary.h1
3 files changed, 15 insertions, 9 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index 574223f3b3..a8d7400850 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,14 @@
+2004-06-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap4/camel-imap4-summary.c
+ (camel_imap4_summary_set_exists): Don't bother with
+ exists_changed. We don't need it afterall.
+ (camel_imap4_summary_flush_updates): Instead of updating flags if
+ update_flags or exists_changed is set, only bother if update_flags
+ is set or if exists is smaller than the summary count (since
+ updating flags is also sueful for determining which messages have
+ been removed).
+
2004-06-11 Jeffrey Stedfast <fejj@novell.com>
* providers/imap4/camel-imap4-folder.c (imap4_refresh_info): Force
diff --git a/camel/providers/imap4/camel-imap4-summary.c b/camel/providers/imap4/camel-imap4-summary.c
index f5fec4d05e..ef08974572 100644
--- a/camel/providers/imap4/camel-imap4-summary.c
+++ b/camel/providers/imap4/camel-imap4-summary.c
@@ -107,7 +107,6 @@ camel_imap4_summary_init (CamelIMAP4Summary *summary, CamelIMAP4SummaryClass *kl
folder_summary->message_info_size = sizeof (CamelIMAP4MessageInfo);
summary->update_flags = TRUE;
- summary->exists_changed = FALSE;
summary->uidvalidity_changed = FALSE;
}
@@ -1010,11 +1009,7 @@ camel_imap4_summary_set_exists (CamelFolderSummary *summary, guint32 exists)
g_return_if_fail (CAMEL_IS_IMAP4_SUMMARY (summary));
- if (imap4_summary->exists == exists)
- return;
-
imap4_summary->exists = exists;
- imap4_summary->exists_changed = TRUE;
}
void
@@ -1131,14 +1126,14 @@ camel_imap4_summary_flush_updates (CamelFolderSummary *summary, CamelException *
g_return_val_if_fail (CAMEL_IS_IMAP4_SUMMARY (summary), -1);
engine = ((CamelIMAP4Store *) imap4_summary->folder->parent_store)->engine;
+ scount = camel_folder_summary_count (summary);
if (imap4_summary->uidvalidity_changed) {
first = 1;
- } else if (imap4_summary->update_flags || imap4_summary->exists_changed) {
+ } else if (imap4_summary->update_flags || imap4_summary->exists < scount) {
/* this both updates flags and removes messages which
* have since been expunged from the server by another
* client */
- scount = camel_folder_summary_count (summary);
ic = imap4_summary_fetch_flags (summary, 1, scount);
while ((id = camel_imap4_engine_iterate (engine)) < ic->id && id != -1)
@@ -1155,6 +1150,8 @@ camel_imap4_summary_flush_updates (CamelFolderSummary *summary, CamelException *
first = scount + 1;
camel_imap4_command_unref (ic);
+ } else {
+ first = scount;
}
if (first != 0 && imap4_summary->exists > 0) {
@@ -1178,7 +1175,6 @@ camel_imap4_summary_flush_updates (CamelFolderSummary *summary, CamelException *
}
imap4_summary->update_flags = FALSE;
- imap4_summary->exists_changed = FALSE;
imap4_summary->uidvalidity_changed = FALSE;
return 0;
diff --git a/camel/providers/imap4/camel-imap4-summary.h b/camel/providers/imap4/camel-imap4-summary.h
index 3bad898a6a..23218ff804 100644
--- a/camel/providers/imap4/camel-imap4-summary.h
+++ b/camel/providers/imap4/camel-imap4-summary.h
@@ -60,7 +60,6 @@ struct _CamelIMAP4Summary {
guint32 uidvalidity;
guint uidvalidity_changed:1;
- guint exists_changed:1;
guint update_flags:1;
};