Add a simple event loop to the cam application and use it in the main() function, with an example of how to handle SIGINT to gracefully stop the loop. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
35 lines
560 B
C++
35 lines
560 B
C++
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (C) 2019, Google Inc.
|
|
*
|
|
* event_loop.h - cam - Event loop
|
|
*/
|
|
#ifndef __CAM_EVENT_LOOP_H__
|
|
#define __CAM_EVENT_LOOP_H__
|
|
|
|
#include <atomic>
|
|
|
|
#include <libcamera/event_notifier.h>
|
|
|
|
namespace libcamera {
|
|
class EventDispatcher;
|
|
};
|
|
|
|
class EventLoop
|
|
{
|
|
public:
|
|
EventLoop(libcamera::EventDispatcher *dispatcher);
|
|
~EventLoop();
|
|
|
|
int exec();
|
|
void exit(int code = 0);
|
|
|
|
private:
|
|
libcamera::EventDispatcher *dispatcher_;
|
|
|
|
std::atomic<bool> exit_;
|
|
int exitCode_;
|
|
};
|
|
|
|
#endif /* __CAM_EVENT_LOOP_H__ */
|