Commit 6230222a authored by Aric Stewart's avatar Aric Stewart Committed by Alexandre Julliard

ole32: Storage optimization.

We do not need to unmap and remap all the victim pages with every resize as they are simply a cache. Provides significant speedup for saving large storage files.
parent 86cbbaf9
...@@ -114,6 +114,7 @@ static MappedPage* BIGBLOCKFILE_CreatePage(LPBIGBLOCKFILE This, ...@@ -114,6 +114,7 @@ static MappedPage* BIGBLOCKFILE_CreatePage(LPBIGBLOCKFILE This,
static DWORD BIGBLOCKFILE_GetProtectMode(DWORD openFlags); static DWORD BIGBLOCKFILE_GetProtectMode(DWORD openFlags);
static BOOL BIGBLOCKFILE_FileInit(LPBIGBLOCKFILE This, HANDLE hFile); static BOOL BIGBLOCKFILE_FileInit(LPBIGBLOCKFILE This, HANDLE hFile);
static BOOL BIGBLOCKFILE_MemInit(LPBIGBLOCKFILE This, ILockBytes* plkbyt); static BOOL BIGBLOCKFILE_MemInit(LPBIGBLOCKFILE This, ILockBytes* plkbyt);
static void BIGBLOCKFILE_DeleteList(LPBIGBLOCKFILE This, MappedPage *list);
/* Note that this evaluates a and b multiple times, so don't /* Note that this evaluates a and b multiple times, so don't
* pass expressions with side effects. */ * pass expressions with side effects. */
...@@ -356,7 +357,15 @@ void BIGBLOCKFILE_SetSize(LPBIGBLOCKFILE This, ULARGE_INTEGER newSize) ...@@ -356,7 +357,15 @@ void BIGBLOCKFILE_SetSize(LPBIGBLOCKFILE This, ULARGE_INTEGER newSize)
TRACE("from %u to %u\n", This->filesize.u.LowPart, newSize.u.LowPart); TRACE("from %u to %u\n", This->filesize.u.LowPart, newSize.u.LowPart);
/* /*
* unmap all views, must be done before call to SetEndFile * unmap all views, must be done before call to SetEndFile
*
* Just ditch the victim list because there is no guarentee we will need them
* and it is not worth the performance hit to unmap and remap them all.
*/ */
BIGBLOCKFILE_DeleteList(This, This->victimhead);
This->victimhead = NULL;
This->victimtail = NULL;
This->num_victim_pages = 0;
BIGBLOCKFILE_UnmapAllMappedPages(This); BIGBLOCKFILE_UnmapAllMappedPages(This);
if (This->fileBased) if (This->fileBased)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment