1 // CrossThreadProgress.h
2 
3 #ifndef __CROSSTHREADPROGRESS_H
4 #define __CROSSTHREADPROGRESS_H
5 
6 #include "../../ICoder.h"
7 #include "../../../Windows/Synchronization.h"
8 #include "../../../Common/MyCom.h"
9 
10 class CCrossThreadProgress:
11   public ICompressProgressInfo,
12   public CMyUnknownImp
13 {
14 public:
15   const UInt64 *InSize;
16   const UInt64 *OutSize;
17   HRESULT Result;
18   NWindows::NSynchronization::CAutoResetEvent ProgressEvent;
19   NWindows::NSynchronization::CAutoResetEvent WaitEvent;
20 
Create()21   HRes Create()
22   {
23     RINOK(ProgressEvent.CreateIfNotCreated());
24     return WaitEvent.CreateIfNotCreated();
25   }
Init()26   void Init()
27   {
28     ProgressEvent.Reset();
29     WaitEvent.Reset();
30   }
31 
32   MY_UNKNOWN_IMP
33 
34   STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize);
35 };
36 
37 #endif
38