mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2026-02-01 02:41:09 -05:00
Improved the ResourceManager device list management
Commit amended for code style by Adam Honse <calcprogrammer1@gmail.com>
This commit is contained in:
@@ -27,7 +27,7 @@
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
NetworkClient::NetworkClient(std::vector<RGBController *>& control) : controllers(control)
|
||||
NetworkClient::NetworkClient()
|
||||
{
|
||||
strcpy(port_ip, "127.0.0.1");
|
||||
port_num = OPENRGB_SDK_PORT;
|
||||
@@ -55,13 +55,28 @@ void NetworkClient::ClientInfoChanged()
|
||||
\*-------------------------------------------------*/
|
||||
for(unsigned int callback_idx = 0; callback_idx < ClientInfoChangeCallbacks.size(); callback_idx++)
|
||||
{
|
||||
ClientInfoChangeCallbacks[callback_idx](ClientInfoChangeCallbackArgs[callback_idx]);
|
||||
NetClientClientInfoChangeCallbackBlock block = ClientInfoChangeCallbacks[callback_idx];
|
||||
block.callback(block.receiver);
|
||||
}
|
||||
|
||||
ControllerListMutex.unlock();
|
||||
ClientInfoChangeMutex.unlock();
|
||||
}
|
||||
|
||||
void NetworkClient::DeviceListChanged(RGBController* controller, bool removed)
|
||||
{
|
||||
ControllerListMutex.lock();
|
||||
/*-------------------------------------------------*\
|
||||
| Controller list has changed, call the callbacks |
|
||||
\*-------------------------------------------------*/
|
||||
for(unsigned int callback_idx = 0; callback_idx < DeviceListChangeCallbacks.size(); callback_idx++)
|
||||
{
|
||||
NetClientDeviceListChangeCallbackBlock block = DeviceListChangeCallbacks[callback_idx];
|
||||
block.callback(block.receiver, this, controller, removed);
|
||||
}
|
||||
ControllerListMutex.unlock();
|
||||
}
|
||||
|
||||
const char * NetworkClient::GetIP()
|
||||
{
|
||||
return(port_ip);
|
||||
@@ -82,10 +97,48 @@ bool NetworkClient::GetOnline()
|
||||
return(server_connected && server_initialized);
|
||||
}
|
||||
|
||||
void NetworkClient::RegisterClientInfoChangeCallback(NetClientCallback new_callback, void * new_callback_arg)
|
||||
void NetworkClient::RegisterClientInfoChangeCallback(NetClientClientInfoChangeCallback callback, void * receiver)
|
||||
{
|
||||
ClientInfoChangeCallbacks.push_back(new_callback);
|
||||
ClientInfoChangeCallbackArgs.push_back(new_callback_arg);
|
||||
NetClientClientInfoChangeCallbackBlock block;
|
||||
|
||||
block.callback = callback;
|
||||
block.receiver = receiver;
|
||||
|
||||
ClientInfoChangeCallbacks.push_back(block);
|
||||
}
|
||||
|
||||
void NetworkClient::UnregisterClientInfoChangedCallback(NetClientClientInfoChangeCallback callback, void* receiver)
|
||||
{
|
||||
for(size_t idx = 0; idx < ClientInfoChangeCallbacks.size(); ++idx)
|
||||
{
|
||||
if(ClientInfoChangeCallbacks[idx].callback == callback && ClientInfoChangeCallbacks[idx].receiver == receiver)
|
||||
{
|
||||
ClientInfoChangeCallbacks.erase(ClientInfoChangeCallbacks.begin());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkClient::RegisterDeviceListChangeCallback(NetClientDeviceListChangeCallback callback, void* receiver)
|
||||
{
|
||||
NetClientDeviceListChangeCallbackBlock block;
|
||||
|
||||
block.callback = callback;
|
||||
block.receiver = receiver;
|
||||
|
||||
DeviceListChangeCallbacks.push_back(block);
|
||||
}
|
||||
|
||||
void NetworkClient::UnregisterDeviceListChangeCallback(NetClientDeviceListChangeCallback callback, void* receiver)
|
||||
{
|
||||
for(size_t idx = 0; idx < DeviceListChangeCallbacks.size(); ++idx)
|
||||
{
|
||||
if(DeviceListChangeCallbacks[idx].callback == callback && DeviceListChangeCallbacks[idx].receiver == receiver)
|
||||
{
|
||||
DeviceListChangeCallbacks.erase(DeviceListChangeCallbacks.begin());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkClient::SetIP(const char *new_ip)
|
||||
@@ -247,7 +300,7 @@ void NetworkClient::ConnectionThreadFunction()
|
||||
printf("Client: All controllers received, adding them to master list\r\n");
|
||||
for(std::size_t controller_idx = 0; controller_idx < server_controllers.size(); controller_idx++)
|
||||
{
|
||||
controllers.push_back(server_controllers[controller_idx]);
|
||||
DeviceListChanged(server_controllers[controller_idx], false);
|
||||
}
|
||||
|
||||
ControllerListMutex.unlock();
|
||||
@@ -427,25 +480,17 @@ listen_done:
|
||||
|
||||
ControllerListMutex.lock();
|
||||
|
||||
for(size_t server_controller_idx = 0; server_controller_idx < server_controllers.size(); server_controller_idx++)
|
||||
for(size_t controller_idx = 0; controller_idx < server_controllers.size(); controller_idx++)
|
||||
{
|
||||
for(size_t controller_idx = 0; controller_idx < controllers.size(); controller_idx++)
|
||||
{
|
||||
if(controllers[controller_idx] == server_controllers[server_controller_idx])
|
||||
{
|
||||
controllers.erase(controllers.begin() + controller_idx);
|
||||
break;
|
||||
}
|
||||
}
|
||||
DeviceListChanged(server_controllers[controller_idx], true);
|
||||
}
|
||||
|
||||
std::vector<RGBController *> server_controllers_copy = server_controllers;
|
||||
std::vector<RGBController *> server_controllers_copy;
|
||||
server_controllers.swap(server_controllers_copy);
|
||||
|
||||
server_controllers.clear();
|
||||
|
||||
for(size_t server_controller_idx = 0; server_controller_idx < server_controllers_copy.size(); server_controller_idx++)
|
||||
for(size_t controller_idx = 0; controller_idx < server_controllers_copy.size(); controller_idx++)
|
||||
{
|
||||
delete server_controllers_copy[server_controller_idx];
|
||||
delete server_controllers_copy[controller_idx];
|
||||
}
|
||||
|
||||
ControllerListMutex.unlock();
|
||||
@@ -508,16 +553,9 @@ void NetworkClient::ProcessRequest_DeviceListChanged()
|
||||
|
||||
ControllerListMutex.lock();
|
||||
|
||||
for(size_t server_controller_idx = 0; server_controller_idx < server_controllers.size(); server_controller_idx++)
|
||||
for(size_t idx = 0; idx < server_controllers.size(); idx++)
|
||||
{
|
||||
for(size_t controller_idx = 0; controller_idx < controllers.size(); controller_idx++)
|
||||
{
|
||||
if(controllers[controller_idx] == server_controllers[server_controller_idx])
|
||||
{
|
||||
controllers.erase(controllers.begin() + controller_idx);
|
||||
break;
|
||||
}
|
||||
}
|
||||
DeviceListChanged(server_controllers[idx], true);
|
||||
}
|
||||
|
||||
std::vector<RGBController *> server_controllers_copy = server_controllers;
|
||||
|
||||
Reference in New Issue
Block a user