summaryrefslogtreecommitdiffhomepage
path: root/tracker-pt
diff options
context:
space:
mode:
Diffstat (limited to 'tracker-pt')
-rw-r--r--tracker-pt/pt_video_widget.cpp29
-rw-r--r--tracker-pt/pt_video_widget.h18
2 files changed, 26 insertions, 21 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();
diff --git a/tracker-pt/pt_video_widget.h b/tracker-pt/pt_video_widget.h
index d9144ac0..c2957876 100644
--- a/tracker-pt/pt_video_widget.h
+++ b/tracker-pt/pt_video_widget.h
@@ -1,5 +1,5 @@
/* Copyright (c) 2012 Patrick Ruoff
- * Copyright (c) 2014 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
@@ -19,25 +19,15 @@
#include <QMutexLocker>
#include <QDebug>
-class PTVideoWidget : public QWidget
+class PTVideoWidget final : public QWidget
{
Q_OBJECT
public:
- PTVideoWidget(QWidget *parent) :
- QWidget(parent),
- freshp(false)
- {
- connect(&timer, SIGNAL(timeout()), this, SLOT(update_and_repaint()));
- timer.start(50);
- }
+ PTVideoWidget(QWidget *parent);
void update_image(const cv::Mat &frame);
protected slots:
- void paintEvent( QPaintEvent* e ) {
- QMutexLocker foo(&mtx);
- QPainter painter(this);
- painter.drawImage(e->rect(), texture);
- }
+ void paintEvent(QPaintEvent* e) override;
void update_and_repaint();
private:
QMutex mtx;