summaryrefslogtreecommitdiff
path: root/src/qcam/assets/feathericons/circle.svg
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-04-13 21:24:37 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-07-06 19:58:36 +0300
commitfcccd7991f444332d7a0c8462ec683738c72425f (patch)
tree4cbc91c1bc7289cd35e6bedcc49c4e01d7bb502a /src/qcam/assets/feathericons/circle.svg
parentfe70472e9b17922ac49eec600d3ecf74e30da227 (diff)
libcamera: media_device: Rename valid() function to isValid()
We use isValid() instead of valid() through the code base, make MediaDevice consistent. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Diffstat (limited to 'src/qcam/assets/feathericons/circle.svg')
0 files changed, 0 insertions, 0 deletions
#n82'>82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (C) 2019, Google Inc.
 *
 * event-dispatcher.cpp - Event dispatcher test
 */

#include <iostream>
#include <signal.h>
#include <sys/time.h>

#include <libcamera/camera_manager.h>
#include <libcamera/event_dispatcher.h>
#include <libcamera/timer.h>

#include "test.h"

using namespace std;
using namespace libcamera;

static EventDispatcher *dispatcher;
static bool interrupt;

class EventDispatcherTest : public Test
{
protected:
	static void sigAlarmHandler(int)
	{
		cout << "SIGALARM received" << endl;
		if (interrupt)
			dispatcher->interrupt();
	}

	int init()
	{
		dispatcher = CameraManager::instance()->eventDispatcher();

		struct sigaction sa = {};
		sa.sa_handler = &sigAlarmHandler;
		sigaction(SIGALRM, &sa, nullptr);

		return 0;
	}

	int run()
	{
		Timer timer;

		/* Event processing interruption by signal. */
		struct timespec start;
		clock_gettime(CLOCK_MONOTONIC, &start);

		timer.start(1000);

		struct itimerval itimer = {};
		itimer.it_value.tv_usec = 500000;
		interrupt = false;
		setitimer(ITIMER_REAL, &itimer, nullptr);

		dispatcher->processEvents();

		struct timespec stop;
		clock_gettime(CLOCK_MONOTONIC, &stop);
		int duration = (stop.tv_sec - start.tv_sec) * 1000;
		duration += (stop.tv_nsec - start.tv_nsec) / 1000000;

		if (abs(duration - 1000) > 50) {
			cout << "Event processing restart test failed" << endl;
			return TestFail;
		}

		/* Event processing interruption. */
		timer.start(1000);
		dispatcher->interrupt();

		dispatcher->processEvents();

		if (!timer.isRunning()) {