diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2016-07-21 14:26:10 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2016-07-23 11:05:33 +0200 |
commit | 6a0ead2849c9e0dc3bbefeecf3e36d4f187624ae (patch) | |
tree | 7d6e7549d214a56f60a66185242c2d1834995267 | |
parent | 9fec162fd5ac3f94850653c63f45ed0a83c5a9d0 (diff) |
pose-widget: don't display when window hidden
When the opentrack window isn't displayed (minimized or hidden by some
other window), don't bother with refreshing the image.
-rw-r--r-- | pose-widget/glwidget.cpp | 17 | ||||
-rw-r--r-- | pose-widget/glwidget.h | 4 |
2 files changed, 18 insertions, 3 deletions
diff --git a/pose-widget/glwidget.cpp b/pose-widget/glwidget.cpp index 5de26eef..b9aec303 100644 --- a/pose-widget/glwidget.cpp +++ b/pose-widget/glwidget.cpp @@ -6,13 +6,14 @@ */ #include "glwidget.h" +#include "opentrack/is-window-visible.hpp" +#include "opentrack-compat/pi-constant.hpp" #include <cmath> #include <algorithm> - #include <QPainter> #include <QPaintEvent> -GLWidget::GLWidget(QWidget *parent) : QWidget(parent) +GLWidget::GLWidget(QWidget *parent) : QWidget(parent), visible(true) { Q_INIT_RESOURCE(posewidget); @@ -25,7 +26,8 @@ GLWidget::~GLWidget() { } -void GLWidget::paintEvent ( QPaintEvent * event ) { +void GLWidget::paintEvent (QPaintEvent * event) +{ QPainter p(this); project_quad_texture(); p.drawImage(event->rect(), image); @@ -33,6 +35,15 @@ void GLWidget::paintEvent ( QPaintEvent * event ) { void GLWidget::rotateBy(float xAngle, float yAngle, float zAngle, float x, float y, float z) { + if (visible_timer.elapsed_ms() > 2000) + { + visible = is_window_visible(this); + visible_timer.start(); + } + + if (!visible) + return; + using std::sin; using std::cos; diff --git a/pose-widget/glwidget.h b/pose-widget/glwidget.h index 0d48ede9..96187856 100644 --- a/pose-widget/glwidget.h +++ b/pose-widget/glwidget.h @@ -12,6 +12,7 @@ #include <QPixmap> #include "opentrack/plugin-api.hpp" #include "opentrack/simple-mat.hpp" +#include "opentrack-compat/timer.hpp" #ifdef BUILD_pose_widget # define POSE_WIDGET_EXPORT Q_DECL_EXPORT @@ -37,9 +38,12 @@ private: vec3 project2(const vec3& point); void project_quad_texture(); static inline vec3 normal(const vec3& p1, const vec3& p2, const vec3& p3); + rmat rotation; vec3 translation; QImage front; QImage back; QImage image; + Timer visible_timer; + bool visible; }; |