diff options
-rw-r--r-- | src/qcam/main.cpp | 3 | ||||
-rw-r--r-- | src/qcam/meson.build | 1 | ||||
-rw-r--r-- | src/qcam/qt_event_dispatcher.cpp | 152 | ||||
-rw-r--r-- | src/qcam/qt_event_dispatcher.h | 62 |
4 files changed, 0 insertions, 218 deletions
diff --git a/src/qcam/main.cpp b/src/qcam/main.cpp index a7ff5c52..29745391 100644 --- a/src/qcam/main.cpp +++ b/src/qcam/main.cpp @@ -15,7 +15,6 @@ #include "main_window.h" #include "../cam/options.h" -#include "qt_event_dispatcher.h" void signalHandler(int signal) { @@ -62,9 +61,7 @@ int main(int argc, char **argv) sa.sa_handler = &signalHandler; sigaction(SIGINT, &sa, nullptr); - std::unique_ptr<EventDispatcher> dispatcher(new QtEventDispatcher()); CameraManager *cm = new CameraManager(); - cm->setEventDispatcher(std::move(dispatcher)); ret = cm->start(); if (ret) { diff --git a/src/qcam/meson.build b/src/qcam/meson.build index 5150631b..214bfb12 100644 --- a/src/qcam/meson.build +++ b/src/qcam/meson.build @@ -3,7 +3,6 @@ qcam_sources = files([ 'main.cpp', 'main_window.cpp', '../cam/options.cpp', - 'qt_event_dispatcher.cpp', 'viewfinder.cpp', ]) diff --git a/src/qcam/qt_event_dispatcher.cpp b/src/qcam/qt_event_dispatcher.cpp deleted file mode 100644 index 2780c912..00000000 --- a/src/qcam/qt_event_dispatcher.cpp +++ /dev/null @@ -1,152 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ -/* - * Copyright (C) 2019, Google Inc. - * - * qt_event_dispatcher.cpp - qcam - Qt-based event dispatcher - */ - -#include <chrono> -#include <iostream> - -#include <QAbstractEventDispatcher> -#include <QCoreApplication> -#include <QSocketNotifier> -#include <QTimerEvent> - -#include <libcamera/event_notifier.h> -#include <libcamera/timer.h> - -#include "qt_event_dispatcher.h" - -using namespace libcamera; - -QtEventDispatcher::QtEventDispatcher() -{ -} - -QtEventDispatcher::~QtEventDispatcher() -{ - for (auto &it : notifiers_) { - NotifierSet &set = it.second; - delete set.read.qnotifier; - delete set.write.qnotifier; - delete set.exception.qnotifier; - } -} - -void QtEventDispatcher::registerEventNotifier(EventNotifier *notifier) -{ - NotifierSet &set = notifiers_[notifier->fd()]; - QSocketNotifier::Type qtype; - void (QtEventDispatcher::*method)(int); - NotifierPair *pair; - - switch (notifier->type()) { - case EventNotifier::Read: - default: - qtype = QSocketNotifier::Read; - method = &QtEventDispatcher::readNotifierActivated; - pair = &set.read; - break; - - case EventNotifier::Write: - qtype = QSocketNotifier::Write; - method = &QtEventDispatcher::writeNotifierActivated; - pair = &set.write; - break; - - case EventNotifier::Exception: - qtype = QSocketNotifier::Exception; - method = &QtEventDispatcher::exceptionNotifierActivated; - pair = &set.exception; - break; - } - - QSocketNotifier *qnotifier = new QSocketNotifier(notifier->fd(), qtype); - connect(qnotifier, &QSocketNotifier::activated, this, method); - pair->notifier = notifier; - pair->qnotifier = qnotifier; -} - -void QtEventDispatcher::unregisterEventNotifier(EventNotifier *notifier) -{ - NotifierSet &set = notifiers_[notifier->fd()]; - NotifierPair *pair; - - switch (notifier->type()) { - case EventNotifier::Read: - default: - pair = &set.read; - break; - - case EventNotifier::Write: - pair = &set.write; - break; - - case EventNotifier::Exception: - pair = &set.exception; - break; - } - - delete pair->qnotifier; - pair->qnotifier = nullptr; - pair->notifier = nullptr; -} - -void QtEventDispatcher::readNotifierActivated(int socket) -{ - EventNotifier *notifier = notifiers_[socket].read.notifier; - notifier->activated.emit(notifier); -} - -void QtEventDispatcher::writeNotifierActivated(int socket) -{ - EventNotifier *notifier = notifiers_[socket].write.notifier; - notifier->activated.emit(notifier); -} - -void QtEventDispatcher::exceptionNotifierActivated(int socket) -{ - EventNotifier *notifier = notifiers_[socket].exception.notifier; - notifier->activated.emit(notifier); -} - -void QtEventDispatcher::registerTimer(Timer *timer) -{ - std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now(); - std::chrono::steady_clock::duration duration = timer->deadline() - now; - std::chrono::milliseconds msec = - std::chrono::duration_cast<std::chrono::milliseconds>(duration); - int timerId = startTimer(msec.count()); - timers_[timerId] = timer; - timerIds_[timer] = timerId; -} - -void QtEventDispatcher::unregisterTimer(Timer *timer) -{ - auto it = timerIds_.find(timer); - if (it == timerIds_.end()) - return; - - timers_.erase(it->second); - killTimer(it->second); - timerIds_.erase(it); -} - -void QtEventDispatcher::timerEvent(QTimerEvent *event) -{ - Timer *timer = timers_[event->timerId()]; - timer->stop(); - timer->timeout.emit(timer); -} - -void QtEventDispatcher::processEvents() -{ - std::cout << "QtEventDispatcher::processEvents() should not be called" - << std::endl; -} - -void QtEventDispatcher::interrupt() -{ - QCoreApplication::eventDispatcher()->interrupt(); -} diff --git a/src/qcam/qt_event_dispatcher.h b/src/qcam/qt_event_dispatcher.h deleted file mode 100644 index b0f123e5..00000000 --- a/src/qcam/qt_event_dispatcher.h +++ /dev/null @@ -1,62 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ -/* - * Copyright (C) 2019, Google Inc. - * - * qt_event_dispatcher.h - qcam - Qt-based event dispatcher - */ -#ifndef __QCAM_QT_EVENT_DISPATCHER_H__ -#define __QCAM_QT_EVENT_DISPATCHER_H__ - -#include <map> - -#include <libcamera/event_dispatcher.h> - -using namespace libcamera; - -class QSocketNotifier; - -class QtEventDispatcher final : public EventDispatcher, public QObject -{ -public: - QtEventDispatcher(); - ~QtEventDispatcher(); - - void registerEventNotifier(EventNotifier *notifier); - void unregisterEventNotifier(EventNotifier *notifier); - - void registerTimer(Timer *timer); - void unregisterTimer(Timer *timer); - - void processEvents(); - - void interrupt(); - -protected: - void timerEvent(QTimerEvent *event); - -private: - void readNotifierActivated(int socket); - void writeNotifierActivated(int socket); - void exceptionNotifierActivated(int socket); - - struct NotifierPair { - NotifierPair() - : notifier(nullptr), qnotifier(nullptr) - { - } - EventNotifier *notifier; - QSocketNotifier *qnotifier; - }; - - struct NotifierSet { - NotifierPair read; - NotifierPair write; - NotifierPair exception; - }; - - std::map<int, NotifierSet> notifiers_; - std::map<int, Timer *> timers_; - std::map<Timer *, int> timerIds_; -}; - -#endif /* __QCAM_QT_EVENT_DISPATCHER_H__ */ |