Umasoft
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
GLThread.h
1 #pragma once
2 
3 #include <OpenThreads/Thread>
4 #include <OpenThreads/Mutex>
5 
6 template<class CViewer>
7 class CGLThread : public OpenThreads::Thread, public OpenThreads::Mutex
8 {
9 public:
10  CGLThread(CViewer* viewer) : Thread(), _viewer(viewer), _resize(false) {}
11 
12  void resizeViewport(const long w, const long h)
13  {
14  _w = w;
15  _h = h;
16  _resize = true;
17  }
18 
19  void run()
20  {
21  while(_viewer->rendering())
22  {
23  if(_resize)
24  {
25  _viewer->resize(_w, _h);
26  _resize = false;
27  }
28  _viewer->frame();
29  }
30  }
31 
32 private:
33  CViewer* _viewer;
34  bool _rendering;
35  bool _resize;
36 
37  int _w, _h;
38 };