Library users can now initialize and de-initialize the library multiple
times in one run of an application program.
- Library users will now receive WIMLIB_PROGRESS_MSG_WRITE_STREAMS
- messages more frequently when writing large WIM files.
+ Library users will now receive WIMLIB_PROGRESS_MSG_WRITE_STREAMS and
+ WIMLIB_PROGRESS_MSG_EXTRACT_STREAMS messages more frequently when
+ writing or extracting large WIM files.
Added experimental new write flag:
WIMLIB_WRITE_FLAG_SEND_DONE_WITH_FILE_MESSAGES.
{
ctx->next_progress = UINT64_MAX;
} else {
- ctx->next_progress += progress->extract.total_bytes / 128;
- if (ctx->next_progress > progress->extract.total_bytes)
+ /* Send new message as soon as another 1/128 of the
+ * total has been extracted. (Arbitrary number.) */
+ ctx->next_progress =
+ progress->extract.completed_bytes +
+ progress->extract.total_bytes / 128;
+
+ /* ... Unless that would be more than 5000000 bytes, in
+ * which case send the next after the next 5000000
+ * bytes. (Another arbitrary number.) */
+ if (progress->extract.completed_bytes + 5000000 <
+ ctx->next_progress)
+ ctx->next_progress =
+ progress->extract.completed_bytes + 5000000;
+
+ /* ... But always send a message as soon as we're
+ * completely done. */
+ if (progress->extract.total_bytes < ctx->next_progress)
ctx->next_progress = progress->extract.total_bytes;
}
}