From ae8ff339c428cd2333dbd32741332e63c16c32b1 Mon Sep 17 00:00:00 2001 From: jeon Date: Fri, 10 Jul 2020 13:33:01 +0900 Subject: [PATCH] DSInput: Add device add/remove signals Change-Id: I39a13760d26abb5283cfa8cfcc3990915bbcf684 --- src/DSInput/DSInput.cpp | 25 ++++++++++++++++++++++--- src/DSInput/DSInput.h | 10 ++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/DSInput/DSInput.cpp b/src/DSInput/DSInput.cpp index 63838dd..b59361f 100644 --- a/src/DSInput/DSInput.cpp +++ b/src/DSInput/DSInput.cpp @@ -37,15 +37,19 @@ void DSInputPrivate::PostDeviceRemoveEvent(std::string seat, std::string name, s DSInput::DSInput() : DS_INIT_PRIVATE_PTR(DSInput) { - DS_GET_PRIV(DSInput); - - priv->Init(); } DSInput::~DSInput() { } +void DSInput::Init() +{ + DS_GET_PRIV(DSInput); + + priv->Init(); +} + void DSInput::deviceAdd(std::string name, std::string identifier, DSInput::DeviceClass devClass, DSInput::DeviceSubclass devSubclass) { DSInputDevice *device = new DSInputDevice(name, identifier, devClass, devSubclass); @@ -59,6 +63,8 @@ void DSInput::deviceAdd(std::string name, std::string identifier, DSInput::Devic } } + this->__deviceAddSignal.emit(std::make_shared(*device)); + devList.push_back(device); } @@ -70,6 +76,8 @@ void DSInput::deviceRemove(std::string name, std::string identifier, DSInput::De { if (*dev == *device) { + this->__deviceRemoveSignal.emit(std::make_shared(*dev)); + devList.remove(dev); delete dev; break; @@ -79,6 +87,17 @@ void DSInput::deviceRemove(std::string name, std::string identifier, DSInput::De delete device; } +void DSInput::registerCallbackDeviceAdd(DSObject *slot, std::function)> func) +{ + this->__deviceAddSignal.connect(slot, func); +} + +void DSInput::registerCallbackDeviceRemove(DSObject *slot, std::function)> func) +{ + this->__deviceRemoveSignal.connect(slot, func); +} + + DSInputDevice::DSInputDevice() : __deviceName(""), __deviceIdentifier(""), diff --git a/src/DSInput/DSInput.h b/src/DSInput/DSInput.h index 1cde6bf..86931e3 100644 --- a/src/DSInput/DSInput.h +++ b/src/DSInput/DSInput.h @@ -6,6 +6,8 @@ #include #include #include +#include +#include namespace display_server { @@ -30,11 +32,19 @@ public: DSInput(); ~DSInput() override; + void Init(); + void deviceAdd(std::string name, std::string identifier, DSInput::DeviceClass devClass, DSInput::DeviceSubclass devSubclass); void deviceRemove(std::string name, std::string identifier, DSInput::DeviceClass devClass, DSInput::DeviceSubclass devSubclass); + void registerCallbackDeviceAdd(DSObject *slot, std::function)> func); + void registerCallbackDeviceRemove(DSObject *slot, std::function)> func); + private: std::list devList; + + DSSignal> __deviceAddSignal; + DSSignal> __deviceRemoveSignal; }; class DSInputDevice -- 2.7.4