summaryrefslogtreecommitdiffhomepage
path: root/tracker-pt/pt_video_widget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tracker-pt/pt_video_widget.cpp')
-rw-r--r--tracker-pt/pt_video_widget.cpp29
1 files changed, 22 insertions, 7 deletions
diff --git a/tracker-pt/pt_video_widget.cpp b/tracker-pt/pt_video_widget.cpp
index 99f86eb2..38d7a5e8 100644
--- a/tracker-pt/pt_video_widget.cpp
+++ b/tracker-pt/pt_video_widget.cpp
@@ -1,20 +1,28 @@
/* Copyright (c) 2012 Patrick Ruoff
- * Copyright (c) 2015 Stanislaw Halik <sthalik@misaki.pl>
+ * Copyright (c) 2014-2016 Stanislaw Halik <sthalik@misaki.pl>
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
- *
- * 20130312, WVR: Add 7 lines to resizeGL after resize_frame. This should lower CPU-load.
*/
#include "pt_video_widget.h"
#include <opencv2/imgproc.hpp>
+#include "opentrack/is-window-visible.hpp"
+
+PTVideoWidget::PTVideoWidget(QWidget* parent) :
+ QWidget(parent),
+ freshp(false)
+{
+ connect(&timer, SIGNAL(timeout()), this, SLOT(update_and_repaint()));
+ timer.start(50);
+}
+
void PTVideoWidget::update_image(const cv::Mat& frame)
{
QMutexLocker foo(&mtx);
-
+
if (!freshp)
{
if (_frame.cols != frame.cols || _frame.rows != frame.rows)
@@ -27,20 +35,27 @@ void PTVideoWidget::update_image(const cv::Mat& frame)
}
}
+void PTVideoWidget::paintEvent(QPaintEvent* e)
+{
+ QMutexLocker foo(&mtx);
+ QPainter painter(this);
+ painter.drawImage(e->rect(), texture);
+}
+
void PTVideoWidget::update_and_repaint()
{
- if (static_cast<QWidget*>(parent())->isEnabled())
+ if (is_window_visible(this))
{
QMutexLocker foo(&mtx);
if (_frame.empty() || !freshp)
return;
cv::cvtColor(_frame, _frame2, cv::COLOR_RGB2BGR);
-
+
if (_frame3.cols != width() || _frame3.rows != height())
_frame3 = cv::Mat(height(), width(), CV_8U);
cv::resize(_frame2, _frame3, cv::Size(width(), height()), 0, 0, cv::INTER_NEAREST);
-
+
texture = QImage((const unsigned char*) _frame3.data, _frame3.cols, _frame3.rows, QImage::Format_RGB888);
freshp = false;
update();