Overte C++ Documentation
interface/src/graphics/RenderEventHandler.h
1 //
2 // RenderEventHandler.h
3 //
4 // Created by Bradley Austin Davis on 29/6/2018.
5 // Copyright 2018 High Fidelity, Inc.
6 //
7 // Distributed under the Apache License, Version 2.0.
8 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
9 //
10 #ifndef hifi_RenderEventHandler_h
11 #define hifi_RenderEventHandler_h
12 
13 #include <functional>
14 #include <QEvent>
15 #include <QElapsedTimer>
16 #include "gl/OffscreenGLCanvas.h"
17 
18 enum ApplicationEvent {
19  // Execute a lambda function
20  Lambda = QEvent::User + 1,
21  // Trigger the next render
22  Render,
23  // Trigger the next idle
24  Idle,
25 };
26 
31 class RenderEventHandler : public QObject {
32  using Parent = QObject;
33  Q_OBJECT
34 public:
35  using CheckCall = std::function <bool()>;
36  using RenderCall = std::function <void()>;
37 
42  CheckCall _checkCall;
43 
47  RenderCall _renderCall;
48 
54  RenderEventHandler(CheckCall checkCall, RenderCall renderCall);
55 
60  QElapsedTimer _lastTimeRendered;
61 
67  std::atomic<bool> _pendingRenderEvent{ true };
68 
72  void resumeThread();
73 
74 private:
79  void initialize();
80 
84  void render();
85 
91  bool event(QEvent* event) override;
92 };
93 
94 #endif // #include hifi_RenderEventHandler_h
Definition: interface/src/graphics/RenderEventHandler.h:31
std::atomic< bool > _pendingRenderEvent
Definition: interface/src/graphics/RenderEventHandler.h:67
QElapsedTimer _lastTimeRendered
Definition: interface/src/graphics/RenderEventHandler.h:60
RenderCall _renderCall
Definition: interface/src/graphics/RenderEventHandler.h:47
RenderEventHandler(CheckCall checkCall, RenderCall renderCall)
Definition: interface/src/graphics/RenderEventHandler.cpp:19
CheckCall _checkCall
Definition: interface/src/graphics/RenderEventHandler.h:42
void resumeThread()
Definition: interface/src/graphics/RenderEventHandler.cpp:36