Detection progress SDK integration, NetworkClient callback rework

This commit is contained in:
Adam Honse
2026-01-12 13:35:30 -06:00
parent 962eca6604
commit 0ccdd5329f
8 changed files with 324 additions and 76 deletions

View File

@@ -45,7 +45,6 @@ static void ResourceManagerDetectionCallback(void * this_ptr, unsigned int updat
case DETECTIONMANAGER_UPDATE_REASON_DETECTION_STARTED:
this_obj->SignalResourceManagerUpdate(RESOURCEMANAGER_UPDATE_REASON_DETECTION_STARTED);
this_obj->ClearLocalDevices();
break;
case DETECTIONMANAGER_UPDATE_REASON_RGBCONTROLLER_REGISTERED:
@@ -53,23 +52,43 @@ static void ResourceManagerDetectionCallback(void * this_ptr, unsigned int updat
this_obj->UpdateDeviceList();
break;
case DETECTIONMANAGER_UPDATE_REASON_RGBCONTROLLER_LIST_CLEARED:
this_obj->ClearLocalDevices();
break;
case DETECTIONMANAGER_UPDATE_REASON_DETECTION_PROGRESS_CHANGED:
this_obj->SignalResourceManagerUpdate(RESOURCEMANAGER_UPDATE_REASON_DETECTION_PROGRESS_CHANGED);
break;
case DETECTIONMANAGER_UPDATE_REASON_DETECTION_COMPLETE:
this_obj->SignalResourceManagerUpdate(RESOURCEMANAGER_UPDATE_REASON_DETECTION_COMPLETE);
this_obj->UpdateDeviceList();
break;
}
}
static void ResourceManagerNetworkClientInfoChangeCallback(void* this_ptr)
static void ResourceManagerNetworkClientCallback(void* this_ptr, unsigned int update_reason)
{
ResourceManager* this_obj = (ResourceManager*)this_ptr;
this_obj->SignalResourceManagerUpdate(RESOURCEMANAGER_UPDATE_REASON_CLIENT_INFO_UPDATED);
this_obj->UpdateDeviceList();
switch(update_reason)
{
case NETWORKCLIENT_UPDATE_REASON_DEVICE_LIST_UPDATED:
this_obj->SignalResourceManagerUpdate(RESOURCEMANAGER_UPDATE_REASON_CLIENT_INFO_UPDATED);
this_obj->UpdateDeviceList();
break;
case NETWORKCLIENT_UPDATE_REASON_DETECTION_STARTED:
this_obj->SignalResourceManagerUpdate(RESOURCEMANAGER_UPDATE_REASON_DETECTION_STARTED);
break;
case NETWORKCLIENT_UPDATE_REASON_DETECTION_PROGRESS_CHANGED:
this_obj->SignalResourceManagerUpdate(RESOURCEMANAGER_UPDATE_REASON_DETECTION_PROGRESS_CHANGED);
break;
case NETWORKCLIENT_UPDATE_REASON_DETECTION_COMPLETE:
this_obj->SignalResourceManagerUpdate(RESOURCEMANAGER_UPDATE_REASON_DETECTION_COMPLETE);
break;
}
}
/*---------------------------------------------------------*\
@@ -261,7 +280,7 @@ void ResourceManager::SetPluginManager(PluginManagerInterface* plugin_manager_pt
\*---------------------------------------------------------*/
void ResourceManager::RegisterNetworkClient(NetworkClient* new_client)
{
new_client->RegisterClientInfoChangeCallback(ResourceManagerNetworkClientInfoChangeCallback, this);
new_client->RegisterNetworkClientCallback(ResourceManagerNetworkClientCallback, this);
clients.push_back(new_client);
}
@@ -371,14 +390,26 @@ bool ResourceManager::GetDetectionEnabled()
unsigned int ResourceManager::GetDetectionPercent()
{
//TODO: get from DetectionManager or client
return DetectionManager::get()->GetDetectionPercent();
if(auto_connection_active && auto_connection_client != NULL)
{
return auto_connection_client->DetectionManager_GetDetectionPercent();
}
else
{
return DetectionManager::get()->GetDetectionPercent();
}
}
std::string ResourceManager::GetDetectionString()
{
//TODO: get from DetectionManager or client
return DetectionManager::get()->GetDetectionString();
if(auto_connection_active && auto_connection_client != NULL)
{
return auto_connection_client->DetectionManager_GetDetectionString();
}
else
{
return DetectionManager::get()->GetDetectionString();
}
}
void ResourceManager::RescanDevices()
@@ -445,12 +476,6 @@ void ResourceManager::ClearLocalDevices()
| Signal device list update |
\*-----------------------------------------------------*/
SignalResourceManagerUpdate(RESOURCEMANAGER_UPDATE_REASON_DEVICE_LIST_UPDATED);
/*-----------------------------------------------------*\
| Device list has changed, inform all clients connected |
| to this server |
\*-----------------------------------------------------*/
server->DeviceListChanged();
}
void ResourceManager::UpdateDeviceList()
@@ -502,12 +527,6 @@ void ResourceManager::UpdateDeviceList()
| Signal device list update |
\*-----------------------------------------------------*/
SignalResourceManagerUpdate(RESOURCEMANAGER_UPDATE_REASON_DEVICE_LIST_UPDATED);
/*-----------------------------------------------------*\
| Device list has changed, inform all clients connected |
| to this server |
\*-----------------------------------------------------*/
server->DeviceListChanged();
}
void ResourceManager::WaitForDetection()
@@ -520,6 +539,8 @@ void ResourceManager::WaitForDetection()
\*---------------------------------------------------------*/
void ResourceManager::SignalResourceManagerUpdate(unsigned int update_reason)
{
server->SignalResourceManagerUpdate(update_reason);
ResourceManagerCallbackMutex.lock();
for(std::size_t callback_idx = 0; callback_idx < ResourceManagerCallbacks.size(); callback_idx++)