From 9977fc3fcbfa0a6aaab04118fc67f0b9b9627570 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Thu, 16 Jan 2020 22:50:15 +0000 Subject: qcam: Support scaling of the viewfinder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The viewfinder is drawn using a QLabel. This could support scaling through QLabel::setScaledContents(), but in a very inefficient way. To maintain reasonable efficiency, turn the viewfinder into a QWidget and draw the image directly using a QPainter. No performance change was noticed running on a fast x86 machine, and performance was 60% higher when scaling up to full screen compared to QLabel. Signed-off-by: Laurent Pinchart Reviewed-by: Niklas Söderlund Reviewed-by: Kieran Bingham --- src/qcam/viewfinder.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/qcam/viewfinder.h') diff --git a/src/qcam/viewfinder.h b/src/qcam/viewfinder.h index 33bdb146..ef5fd45b 100644 --- a/src/qcam/viewfinder.h +++ b/src/qcam/viewfinder.h @@ -7,13 +7,13 @@ #ifndef __QCAM_VIEWFINDER_H__ #define __QCAM_VIEWFINDER_H__ -#include +#include #include "format_converter.h" class QImage; -class ViewFinder : public QLabel +class ViewFinder : public QWidget { public: ViewFinder(QWidget *parent); @@ -23,6 +23,10 @@ public: unsigned int height); void display(const unsigned char *rgb, size_t size); +protected: + void paintEvent(QPaintEvent *) override; + QSize sizeHint() const override; + private: unsigned int format_; unsigned int width_; -- cgit v1.2.1