Author: ivan
Date: Fri Aug 23 13:26:32 2013
New Revision: 1516843
URL: http://svn.apache.org/r1516843
Log:
On reuse-ra-session branch: Fix progress reporting for reused sessions.
* subversion/libsvn_client/ra_cache.c
(cached_session_t): Add LAST_PROGRESS and PROGRESS.
(progress_func): Accumulate PROGRESS and report it to real callback.
(svn_client__ra_cache_open_session): Reset PROGRESS when session reused.
Modified:
subversion/branches/reuse-ra-session/subversion/libsvn_client/ra_cache.c
Modified:
subversion/branches/reuse-ra-session/subversion/libsvn_client/ra_cache.c
URL:
http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/ra_cache.c?rev=1516843&r1=1516842&r2=1516843&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/ra_cache.c
(original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/ra_cache.c
Fri Aug 23 13:26:32 2013
@@ -53,6 +53,12 @@ typedef struct cached_session_s
/* ID of RA session. Used only for diagnostics purpose. */
int id;
+
+ /* Last progress reported by this session. */
+ apr_off_t last_progress;
+
+ /* Accumulated progress since last session open. */
+ apr_off_t progress;
} cached_session_t;
struct svn_client__ra_cache_s
@@ -250,8 +256,11 @@ progress_func(apr_off_t progress,
{
cached_session_t *b = baton;
+ b->progress += (progress - b->last_progress);
+ b->last_progress = progress;
+
if (b->cb_table->progress_func)
- b->cb_table->progress_func(progress, total, b->cb_table->progress_baton,
+ b->cb_table->progress_func(b->progress, -1, b->cb_table->progress_baton,
pool);
}
@@ -385,6 +394,7 @@ svn_client__ra_cache_open_session(svn_ra
cache_entry->owner_pool = result_pool;
cache_entry->cb_table = cbtable;
cache_entry->cb_baton = callback_baton;
+ cache_entry->progress = 0;
apr_pool_cleanup_register(result_pool, cache_entry, cleanup_session,
apr_pool_cleanup_null);