Add detection start and end callbacks

This commit is contained in:
morg 2021-05-17 10:06:42 +02:00 committed by Adam Honse
parent d88f9979a9
commit f54ecd8b1b
2 changed files with 51 additions and 20 deletions

View file

@ -172,12 +172,6 @@ void ResourceManager::RegisterDeviceListChangeCallback(DeviceListChangeCallback
DeviceListChangeCallbackArgs.push_back(new_callback_arg);
}
void ResourceManager::RegisterDeviceListWarningCallback(DeviceListWarningCallback new_callback, void *new_callback_arg)
{
DeviceListWarningCallbacks.push_back(new_callback);
DeviceListWarningCallbackArgs.push_back(new_callback_arg);
}
void ResourceManager::RegisterI2CBusListChangeCallback(I2CBusListChangeCallback new_callback, void * new_callback_arg)
{
I2CBusListChangeCallbacks.push_back(new_callback);
@ -190,15 +184,22 @@ void ResourceManager::RegisterDetectionProgressCallback(DetectionProgressCallbac
DetectionProgressCallbackArgs.push_back(new_callback_arg);
}
void ResourceManager::RegisterDetectionStartCallback(DetectionStartCallback new_callback, void *new_callback_arg)
{
DetectionStartCallbacks.push_back(new_callback);
DetectionStartCallbackArgs.push_back(new_callback_arg);
}
void ResourceManager::RegisterDetectionEndCallback(DetectionEndCallback new_callback, void *new_callback_arg)
{
DetectionEndCallbacks.push_back(new_callback);
DetectionEndCallbackArgs.push_back(new_callback_arg);
}
void ResourceManager::UpdateDeviceList()
{
DeviceListChangeMutex.lock();
for(unsigned int callback_idx = 0; callback_idx < (int)DeviceListWarningCallbacks.size(); callback_idx++)
{
DeviceListWarningCallbacks[callback_idx](DeviceListWarningCallbackArgs[callback_idx]);
}
/*-------------------------------------------------*\
| Insert hardware controllers into controller list |
\*-------------------------------------------------*/
@ -477,6 +478,14 @@ void ResourceManager::Cleanup()
void ResourceManager::DetectDevices()
{
/*-----------------------------------------------------*\
| Call detection start callbacks |
\*-----------------------------------------------------*/
for(unsigned int callback_idx = 0; callback_idx < DetectionStartCallbacks.size(); callback_idx++)
{
DetectionStartCallbacks[callback_idx](DetectionStartCallbackArgs[callback_idx]);
}
/*-----------------------------------------------------*\
| Update the detector settings |
\*-----------------------------------------------------*/
@ -524,7 +533,15 @@ void ResourceManager::DetectDevices()
\*-------------------------------------------------*/
detection_percent = 100;
DetectionProgressChanged();
}
/*-----------------------------------------------------*\
| Call detection end callbacks |
\*-----------------------------------------------------*/
for(unsigned int callback_idx = 0; callback_idx < DetectionEndCallbacks.size(); callback_idx++)
{
DetectionEndCallbacks[callback_idx](DetectionEndCallbackArgs[callback_idx]);
}
}
}
void ResourceManager::DisableDetection()
@ -903,6 +920,14 @@ void ResourceManager::DetectDevicesThreadFunction()
DetectDeviceMutex.unlock();
/*-----------------------------------------------------*\
| Call detection end callbacks |
\*-----------------------------------------------------*/
for(unsigned int callback_idx = 0; callback_idx < DetectionEndCallbacks.size(); callback_idx++)
{
DetectionEndCallbacks[callback_idx](DetectionEndCallbackArgs[callback_idx]);
}
LOG_NOTICE("Detection completed");
}