mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	Support Events for Grabbers generically
This commit is contained in:
		@@ -68,7 +68,7 @@ protected:
 | 
			
		||||
#else
 | 
			
		||||
	bool nativeEventFilter(const QByteArray& eventType, void* message, long int* result) override;
 | 
			
		||||
#endif
 | 
			
		||||
^
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
 | 
			
		||||
	bool registerOsEventHandler() override;
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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:
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -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"))
 | 
			
		||||
 
 | 
			
		||||
@@ -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();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user