diff options
Diffstat (limited to 'tracker-pt')
-rw-r--r-- | tracker-pt/pt_video_widget.cpp | 29 | ||||
-rw-r--r-- | tracker-pt/pt_video_widget.h | 18 |
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; |