Support Events for Grabbers generically

This commit is contained in:
Lord-Grey 2023-11-09 18:14:26 +01:00
parent 77b5bb633d
commit c3daeef077
8 changed files with 25 additions and 15 deletions

View File

@ -68,7 +68,7 @@ protected:
#else
bool nativeEventFilter(const QByteArray& eventType, void* message, long int* result) override;
#endif
^
private:
bool registerOsEventHandler() override;

View File

@ -92,7 +92,7 @@ public slots:
void stop();
void newThreadFrame(Image<ColorRgb> image);
void handleEvent(Event event);
void handleEvent(Event event) override;
signals:
void newFrame(const Image<ColorRgb> & image);

View File

@ -9,8 +9,6 @@
#include <grabber/V4L2Grabber.h>
#endif
#include <events/Event.h>
class VideoWrapper : public GrabberWrapper
{
Q_OBJECT
@ -23,8 +21,6 @@ public slots:
bool start() override;
void stop() override;
void handleEvent(Event event);
void handleSettingsUpdate(settings::type type, const QJsonDocument& config) override;
private slots:

View File

@ -11,6 +11,8 @@
#include <utils/Logger.h>
#include <utils/Components.h>
#include <events/Event.h>
///
/// @brief The Grabber class is responsible to apply image resizes (with or without ImageResampler)
@ -111,6 +113,10 @@ public:
QString getGrabberName() const { return _grabberName; }
public slots:
virtual void handleEvent(Event event) {}
protected slots:
///
/// @brief Set device in error state

View File

@ -18,6 +18,8 @@
#include <grabber/GrabberType.h>
#include <events/Event.h>
class Grabber;
class GlobalSignals;
class QTimer;
@ -139,6 +141,8 @@ public slots:
///
virtual void handleSettingsUpdate(settings::type type, const QJsonDocument& config);
void handleEvent(Event event);
signals:
///
/// @brief Emit the final processed image

View File

@ -23,3 +23,8 @@ endif(UNIX)
target_include_directories(events PUBLIC
${CURRENT_HEADER_DIR}
)
target_link_libraries(events
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Widgets
)

View File

@ -2,8 +2,6 @@
#include <grabber/VideoWrapper.h>
#include <events/EventHandler.h>
// qt includes
#include <QTimer>
@ -24,8 +22,6 @@ VideoWrapper::VideoWrapper()
connect(&_grabber, SIGNAL(readError(const char*)), this, SLOT(readError(const char*)), Qt::DirectConnection);
connect(&_grabber, SIGNAL(readError(const char*)), this, SLOT(readError(const char*)), Qt::DirectConnection);
QObject::connect(EventHandler::getInstance(), &EventHandler::signalEvent, this, &VideoWrapper::handleEvent);
}
VideoWrapper::~VideoWrapper()
@ -44,11 +40,6 @@ void VideoWrapper::stop()
GrabberWrapper::stop();
}
void VideoWrapper::handleEvent(Event event)
{
_grabber.handleEvent(event);
}
void VideoWrapper::handleSettingsUpdate(settings::type type, const QJsonDocument& config)
{
if(type == settings::V4L2 && _grabberName.startsWith("V4L2"))

View File

@ -5,6 +5,7 @@
// utils includes
#include <utils/GlobalSignals.h>
#include <events/EventHandler.h>
// qt
#include <QTimer>
@ -49,6 +50,8 @@ GrabberWrapper::GrabberWrapper(const QString& grabberName, Grabber * ggrabber, i
// listen for source requests
connect(GlobalSignals::getInstance(), &GlobalSignals::requestSource, this, &GrabberWrapper::handleSourceRequest);
QObject::connect(EventHandler::getInstance(), &EventHandler::signalEvent, this, &GrabberWrapper::handleEvent);
}
GrabberWrapper::~GrabberWrapper()
@ -83,6 +86,11 @@ void GrabberWrapper::stop()
}
}
void GrabberWrapper::handleEvent(Event event)
{
_ggrabber->handleEvent(event);
}
bool GrabberWrapper::isActive() const
{
return _timer->isActive();