diff options
author | Kieran Bingham <kieran.bingham@ideasonboard.com> | 2021-06-25 02:06:55 +0100 |
---|---|---|
committer | Kieran Bingham <kieran.bingham@ideasonboard.com> | 2021-06-25 16:11:10 +0100 |
commit | f9ee72430735f749fb7d8fd4a8fe01ca88dc1f88 (patch) | |
tree | 3de5662a1ad584c4e69449fe8b00cdfedae8399c /src/libcamera/event_notifier.cpp | |
parent | b304bc013ef8022131ef0a146f20c6bad7ac45d5 (diff) |
libcamera/base: Move event_notifier to base
Move the event notifier, and associated header updates.
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/libcamera/event_notifier.cpp')
-rw-r--r-- | src/libcamera/event_notifier.cpp | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/src/libcamera/event_notifier.cpp b/src/libcamera/event_notifier.cpp deleted file mode 100644 index 784016a9..00000000 --- a/src/libcamera/event_notifier.cpp +++ /dev/null @@ -1,141 +0,0 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ -/* - * Copyright (C) 2019, Google Inc. - * - * event_notifier.cpp - File descriptor event notifier - */ - -#include "libcamera/internal/event_notifier.h" - -#include <libcamera/camera_manager.h> - -#include <libcamera/base/event_dispatcher.h> -#include <libcamera/base/message.h> -#include <libcamera/base/thread.h> - -/** - * \file event_notifier.h - * \brief File descriptor event notifier - */ - -namespace libcamera { - -/** - * \class EventNotifier - * \brief Notify of activity on a file descriptor - * - * The EventNotifier models a file descriptor event source that can be - * monitored. It is created with the file descriptor to be monitored and the - * type of event, and is enabled by default. It will emit the \ref activated - * signal whenever an event of the monitored type occurs on the file descriptor. - * - * Supported type of events are EventNotifier::Read, EventNotifier::Write and - * EventNotifier::Exception. The type is specified when constructing the - * notifier, and can be retrieved using the type() function. To listen to - * multiple event types on the same file descriptor multiple notifiers must be - * created. - * - * The notifier can be disabled with the setEnabled() function. When the notifier - * is disabled it ignores events and does not emit the \ref activated signal. - * The notifier can then be re-enabled with the setEnabled() function. - * - * Creating multiple notifiers of the same type for the same file descriptor is - * not allowed and results in undefined behaviour. - * - * Notifier events are detected and dispatched from the - * EventDispatcher::processEvents() function. - */ - -/** - * \enum EventNotifier::Type - * Type of file descriptor event to listen for. - * \var EventNotifier::Read - * Data is available to be read from the file descriptor - * \var EventNotifier::Write - * Data can be written to the file descriptor - * \var EventNotifier::Exception - * An exception has occurred on the file descriptor - */ - -/** - * \brief Construct an event notifier with a file descriptor and event type - * \param[in] fd The file descriptor to monitor - * \param[in] type The event type to monitor - * \param[in] parent The parent Object - */ -EventNotifier::EventNotifier(int fd, Type type, Object *parent) - : Object(parent), fd_(fd), type_(type), enabled_(false) -{ - setEnabled(true); -} - -EventNotifier::~EventNotifier() -{ - setEnabled(false); -} - -/** - * \fn EventNotifier::type() - * \brief Retrieve the type of the event being monitored - * \return The type of the event - */ - -/** - * \fn EventNotifier::fd() - * \brief Retrieve the file descriptor being monitored - * \return The file descriptor - */ - -/** - * \fn EventNotifier::enabled() - * \brief Retrieve the notifier state - * \return True if the notifier is enabled, or false otherwise - * \sa setEnabled() - */ - -/** - * \brief Enable or disable the notifier - * \param[in] enable True to enable the notifier, false to disable it - * - * This function enables or disables the notifier. A disabled notifier ignores - * events and does not emit the \ref activated signal. - * - * \context This function is \threadbound. - */ -void EventNotifier::setEnabled(bool enable) -{ - if (enabled_ == enable) - return; - - enabled_ = enable; - - EventDispatcher *dispatcher = thread()->eventDispatcher(); - if (enable) - dispatcher->registerEventNotifier(this); - else - dispatcher->unregisterEventNotifier(this); -} - -/** - * \var EventNotifier::activated - * \brief Signal emitted when the event occurs - * - * This signal is emitted when the event \ref type() occurs on the file - * descriptor monitored by the notifier. The notifier pointer is passed as a - * parameter. - */ - -void EventNotifier::message(Message *msg) -{ - if (msg->type() == Message::ThreadMoveMessage) { - if (enabled_) { - setEnabled(false); - invokeMethod(&EventNotifier::setEnabled, - ConnectionTypeQueued, true); - } - } - - Object::message(msg); -} - -} /* namespace libcamera */ |