summaryrefslogtreecommitdiff
path: root/src/android/camera_buffer.h
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-04-13 00:41:09 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-04-17 00:52:57 +0300
commitab8db44efb09c54c402d027bbf980b0249958429 (patch)
tree91e8ffa4995507f560fcf4757c46c22f6a2e2351 /src/android/camera_buffer.h
parent1ad214dd1b353e79923ec6d6dfd4246759e99407 (diff)
libcamera: signal: Fix return value template type of BoundMethodMember
The BoundMethodMember instance created in Signal::connect() for receivers inheriting from the Object class incorrectly sets the return type to void instead of R. This doesn't cause any functional issue as the return type is ignored anyway for signals, but should be fixed nonetheless. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/android/camera_buffer.h')
0 files changed, 0 insertions, 0 deletions
6'>56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (C) 2019, Google Inc.
 *
 * viewfinder.cpp - qcam - Viewfinder
 */

#include <QImage>
#include <QImageWriter>
#include <QMutexLocker>
#include <QPainter>

#include "format_converter.h"
#include "viewfinder.h"

ViewFinder::ViewFinder(QWidget *parent)
	: QWidget(parent), format_(0), width_(0), height_(0), image_(nullptr)
{
}

ViewFinder::~ViewFinder()
{
	delete image_;
}

void ViewFinder::display(const unsigned char *raw, size_t size)
{
	QMutexLocker locker(&mutex_);

	/*
	 * \todo We're not supposed to block the pipeline handler thread
	 * for long, implement a better way to save images without
	 * impacting performances.
	 */

	converter_.convert(raw, size, image_);
	update();
}

QImage ViewFinder::getCurrentImage()
{
	QMutexLocker locker(&mutex_);

	return image_->copy();
}

int ViewFinder::setFormat(unsigned int format, unsigned int width,
			  unsigned int height)
{
	int ret;

	ret = converter_.configure(format, width, height);
	if (ret < 0)
		return ret;

	format_ = format;
	width_ = width;
	height_ = height;

	delete image_;
	image_ = new QImage(width, height, QImage::Format_RGB32);

	updateGeometry();
	return 0;
}

void ViewFinder::paintEvent(QPaintEvent *)
{
	QPainter painter(this);
	painter.drawImage(rect(), *image_, image_->rect());
}

QSize ViewFinder::sizeHint() const
{
	return image_ ? image_->size() : QSize(640, 480);
}