Make device list change warning callback

This will be helpful for keeping plugins from crashing

Commit amended to change callback function name for consistency by Adam Honse <calcprogrammer1@gmail.com>
This commit is contained in:
silas 2021-02-10 12:12:34 -06:00 committed by Adam Honse
parent 02ba8a799e
commit a51e2f8ac8
2 changed files with 18 additions and 1 deletions

View file

@ -47,6 +47,7 @@ typedef struct
} HIDDeviceDetectorBlock;
typedef void (*DeviceListChangeCallback)(void *);
typedef void (*DeviceListWarningCallback)(void *);
typedef void (*DetectionProgressCallback)(void *);
typedef void (*I2CBusListChangeCallback)(void *);
@ -59,6 +60,7 @@ public:
virtual void UnregisterRGBController(RGBController *rgb_controller) = 0;
virtual void RegisterDeviceListChangeCallback(DeviceListChangeCallback new_callback, void * new_callback_arg) = 0;
virtual void RegisterDeviceListWarningCallback(DeviceListWarningCallback new_callback, void * new_callback_arg) = 0;
virtual void RegisterDetectionProgressCallback(DetectionProgressCallback new_callback, void * new_callback_arg) = 0;
virtual void RegisterI2CBusListChangeCallback(I2CBusListChangeCallback new_callback, void * new_callback_arg) = 0;
@ -109,6 +111,7 @@ public:
int usage = HID_USAGE_ANY);
void RegisterDeviceListChangeCallback(DeviceListChangeCallback new_callback, void * new_callback_arg);
void RegisterDeviceListWarningCallback(DeviceListWarningCallback new_callback, void * new_callback_arg);
void RegisterDetectionProgressCallback(DetectionProgressCallback new_callback, void * new_callback_arg);
void RegisterI2CBusListChangeCallback(I2CBusListChangeCallback new_callback, void * new_callback_arg);
@ -207,12 +210,15 @@ private:
const char* detection_string;
/*-------------------------------------------------------------------------------------*\
| Device List Changed Callback |
| Device List Changed and Warning Callbacks |
\*-------------------------------------------------------------------------------------*/
std::mutex DeviceListChangeMutex;
std::vector<DeviceListChangeCallback> DeviceListChangeCallbacks;
std::vector<void *> DeviceListChangeCallbackArgs;
std::vector<DeviceListWarningCallback> DeviceListWarningCallbacks;
std::vector<void *> DeviceListWarningCallbackArgs;
/*-------------------------------------------------------------------------------------*\
| Detection Progress Callback |
\*-------------------------------------------------------------------------------------*/