All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PauseWorkItem.h
1 #pragma once
2 
3 #include "SemaphoreEegeo.h"
4 #include "WorkItem.h"
5 
6 namespace Eegeo
7 {
8  namespace Concurrency
9  {
10  namespace Tasks
11  {
12  class PauseWorkItem : public WorkItem
13  {
14  public:
15 
16  void Resume()
17  {
18  m_workerSemaphore.Signal();
19  }
20 
21  void WaitUntilPaused()
22  {
23  m_controllerSemaphore.Wait();
24  }
25 
26  bool RequiresGlContext() const
27  {
28  return false;
29  }
30 
31  protected:
32 
33  virtual void DoWork()
34  {
35  m_controllerSemaphore.Signal();
36  m_workerSemaphore.Wait();
37  }
38 
39  virtual void DoFinalizeOnMainThread()
40  {
41  }
42 
43  private:
44 
45  Semaphore m_controllerSemaphore;
46  Semaphore m_workerSemaphore;
47  };
48  }
49  }
50 }