Mercurial > vba-linux
view src/win32/7zip/7z/CPP/7zip/Common/ProgressMt.cpp @ 1:f9f4f1b99eed
importing src directory
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 03 Mar 2012 10:31:27 -0600 |
parents | |
children |
line wrap: on
line source
1 // ProgressMt.h3 #include "StdAfx.h"5 #include "ProgressMt.h"7 void CMtCompressProgressMixer::Init(int numItems, ICompressProgressInfo *progress)8 {9 NWindows::NSynchronization::CCriticalSectionLock lock(CriticalSection);10 InSizes.Clear();11 OutSizes.Clear();12 for (int i = 0; i < numItems; i++)13 {14 InSizes.Add(0);15 OutSizes.Add(0);16 }17 TotalInSize = 0;18 TotalOutSize = 0;19 _progress = progress;20 }22 void CMtCompressProgressMixer::Reinit(int index)23 {24 NWindows::NSynchronization::CCriticalSectionLock lock(CriticalSection);25 InSizes[index] = 0;26 OutSizes[index] = 0;27 }29 HRESULT CMtCompressProgressMixer::SetRatioInfo(int index, const UInt64 *inSize, const UInt64 *outSize)30 {31 NWindows::NSynchronization::CCriticalSectionLock lock(CriticalSection);32 if (inSize != 0)33 {34 UInt64 diff = *inSize - InSizes[index];35 InSizes[index] = *inSize;36 TotalInSize += diff;37 }38 if (outSize != 0)39 {40 UInt64 diff = *outSize - OutSizes[index];41 OutSizes[index] = *outSize;42 TotalOutSize += diff;43 }44 if (_progress)45 return _progress->SetRatioInfo(&TotalInSize, &TotalOutSize);46 return S_OK;47 }50 STDMETHODIMP CMtCompressProgress::SetRatioInfo(const UInt64 *inSize, const UInt64 *outSize)51 {52 return _progress->SetRatioInfo(_index, inSize, outSize);53 }