diff options
author | 9 <NotZed@Ximian.com> | 2001-10-09 23:36:31 +0000 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2001-10-09 23:36:31 +0000 |
commit | 7a32454b080d8fcd74c5e194cc29cb6bfcfa3c61 (patch) | |
tree | cbba968e3b69c8d47335fa5555c177b4ea8a9d4e | |
parent | c908c8c8a63ed1937948549b2d43e6883fbdfcc5 (diff) | |
download | evolution-data-server-7a32454b080d8fcd74c5e194cc29cb6bfcfa3c61.tar.gz |
Another go at getting the logic right again. Make transients only updateEVOLUTION_0_16
2001-10-09 <NotZed@Ximian.com>
* camel-operation.c (camel_operation_progress): Another go at
getting the logic right again. Make transients only update after
5 seconds (CAMEL_OPERATION_TRANSIENT_DELAY)
(camel_operation_end): Likewise.
-rw-r--r-- | camel/ChangeLog | 5 | ||||
-rw-r--r-- | camel/camel-operation.c | 21 |
2 files changed, 21 insertions, 5 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index ded2ff8b3..b33a6c511 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,5 +1,10 @@ 2001-10-09 <NotZed@Ximian.com> + * camel-operation.c (camel_operation_progress): Another go at + getting the logic right again. Make transients only update after + 5 seconds (CAMEL_OPERATION_TRANSIENT_DELAY) + (camel_operation_end): Likewise. + * providers/local/camel-spool-folder.c (spool_search_by_uids): Implement. diff --git a/camel/camel-operation.c b/camel/camel-operation.c index e44d7ffde..9f007d79f 100644 --- a/camel/camel-operation.c +++ b/camel/camel-operation.c @@ -48,6 +48,9 @@ struct _CamelOperation { #define CAMEL_OPERATION_CANCELLED (1<<0) #define CAMEL_OPERATION_TRANSIENT (1<<1) +/* Delay before a transient operation has any effect on the status */ +#define CAMEL_OPERATION_TRANSIENT_DELAY (5) + #ifdef ENABLE_THREADS #define CAMEL_ACTIVE_LOCK() pthread_mutex_lock(&operation_active_lock) #define CAMEL_ACTIVE_UNLOCK() pthread_mutex_unlock(&operation_active_lock) @@ -562,12 +565,20 @@ void camel_operation_progress(CamelOperation *cc, int pc) s = cc->status_stack->data; s->pc = pc; + /* Transient messages dont start updating till 4 seconds after + they started, then they update every second */ now = stamp(); - if (cc->status_update == now - || (s->flags & CAMEL_OPERATION_TRANSIENT - && s->stamp/16 > now/16)) + if (cc->status_update == now) { cc = NULL; - else { + } else if (s->flags & CAMEL_OPERATION_TRANSIENT) { + if (s->stamp + CAMEL_OPERATION_TRANSIENT_DELAY > now) { + cc = NULL; + } else { + cc->status_update = now; + cc->lastreport = s; + msg = g_strdup(s->msg); + } + } else { s->stamp = cc->status_update = now; cc->lastreport = s; msg = g_strdup(s->msg); @@ -627,7 +638,7 @@ void camel_operation_end(CamelOperation *cc) while (l) { p = l->data; if (p->flags & CAMEL_OPERATION_TRANSIENT) { - if (p->stamp/16 < now/16) { + if (p->stamp + CAMEL_OPERATION_TRANSIENT_DELAY < now) { msg = g_strdup(p->msg); pc = p->pc; cc->lastreport = p; |