From 71cd411ffce922071c8924f31b2faf04b630617b Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Wed, 5 Aug 2026 01:20:06 -0500 Subject: [PATCH] Fix active profile initialization during initial local client connection as well as local client reconnections --- NetworkClient.cpp | 12 ++++++++---- NetworkClient.h | 1 + ProfileManager.cpp | 4 +++- ResourceManager.cpp | 7 +++++++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/NetworkClient.cpp b/NetworkClient.cpp index 6986fee5c..40267925b 100644 --- a/NetworkClient.cpp +++ b/NetworkClient.cpp @@ -119,6 +119,7 @@ static bool IsCallbackPacket(unsigned int pkt_id) { case NET_PACKET_ID_REQUEST_CONTROLLER_COUNT: case NET_PACKET_ID_REQUEST_CONTROLLER_DATA: + case NET_PACKET_ID_SET_SERVER_FLAGS: case NET_PACKET_ID_SET_SERVER_HOSTNAME: case NET_PACKET_ID_SET_SERVER_NAME: case NET_PACKET_ID_DEVICE_LIST_UPDATED: @@ -217,6 +218,10 @@ void NetworkClient::ReceiveQueueThreadFunction() ProcessReply_ControllerData(entry.header.pkt_size, entry.data, entry.header.pkt_dev_id); break; + case NET_PACKET_ID_SET_SERVER_FLAGS: + ProcessRequest_ServerFlags(entry.header.pkt_size, entry.data); + break; + case NET_PACKET_ID_SET_SERVER_HOSTNAME: ProcessRequest_ServerHostname(entry.header.pkt_size, entry.data); break; @@ -2047,10 +2052,6 @@ void NetworkClient::ListenThreadFunction() ProcessReply_ProtocolVersion(header.pkt_size, data); break; - case NET_PACKET_ID_SET_SERVER_FLAGS: - ProcessRequest_ServerFlags(header.pkt_size, data); - break; - case NET_PACKET_ID_LOGMANAGER_LOGGED_ENTRY: ProcessRequest_LogManager_LoggedEntry(header.pkt_size, data); break; @@ -2062,6 +2063,7 @@ void NetworkClient::ListenThreadFunction() \*---------------------------------------------*/ case NET_PACKET_ID_REQUEST_CONTROLLER_COUNT: case NET_PACKET_ID_REQUEST_CONTROLLER_DATA: + case NET_PACKET_ID_SET_SERVER_FLAGS: case NET_PACKET_ID_SET_SERVER_HOSTNAME: case NET_PACKET_ID_SET_SERVER_NAME: case NET_PACKET_ID_DEVICE_LIST_UPDATED: @@ -2568,6 +2570,8 @@ void NetworkClient::ProcessRequest_ServerFlags(unsigned int data_size, unsigned } server_flags_initialized = true; + + SignalNetworkClientUpdate(NETWORKCLIENT_UPDATE_REASON_SERVER_FLAGS_RECEIVED); } void NetworkClient::ProcessRequest_ServerHostname(unsigned int data_size, unsigned char* data_ptr) diff --git a/NetworkClient.h b/NetworkClient.h index 110164f3f..3dfc15b51 100644 --- a/NetworkClient.h +++ b/NetworkClient.h @@ -46,6 +46,7 @@ enum NETWORKCLIENT_UPDATE_REASON_PROFILEMANAGER_PROFILE_LIST_UPDATED, /* Profile list updated */ NETWORKCLIENT_UPDATE_REASON_PROFILEMANAGER_ACTIVE_PROFILE_CHANGED, /* Active profile changed */ NETWORKCLIENT_UPDATE_REASON_SERVER_HOSTNAME_RECEIVED, /* Server hostname received */ + NETWORKCLIENT_UPDATE_REASON_SERVER_FLAGS_RECEIVED, /* Server flags received */ }; typedef struct diff --git a/ProfileManager.cpp b/ProfileManager.cpp index c102bb74d..83be6ca55 100644 --- a/ProfileManager.cpp +++ b/ProfileManager.cpp @@ -1114,7 +1114,9 @@ void ProfileManager::UpdateProfileList() if(ResourceManager::get()->IsLocalClient() && (ResourceManager::get()->GetLocalClient()->GetSupportsProfileManagerAPI())) { ResourceManager::get()->GetLocalClient()->ProfileManager_GetProfileList(); - ResourceManager::get()->GetLocalClient()->ProfileManager_GetActiveProfile(); + active_profile = ResourceManager::get()->GetLocalClient()->ProfileManager_GetActiveProfile(); + + SignalProfileManagerUpdate(PROFILEMANAGER_UPDATE_REASON_PROFILE_LIST_UPDATED); } else { diff --git a/ResourceManager.cpp b/ResourceManager.cpp index 9b0a55885..8c69d5690 100644 --- a/ResourceManager.cpp +++ b/ResourceManager.cpp @@ -118,6 +118,13 @@ static void ResourceManagerNetworkClientCallback(void* this_ptr, unsigned int up case NETWORKCLIENT_UPDATE_REASON_PROFILEMANAGER_ACTIVE_PROFILE_CHANGED: this_obj->GetProfileManager()->SignalProfileManagerUpdate(PROFILEMANAGER_UPDATE_REASON_ACTIVE_PROFILE_CHANGED); break; + + case NETWORKCLIENT_UPDATE_REASON_SERVER_FLAGS_RECEIVED: + if(this_obj->IsLocalClient()) + { + this_obj->GetProfileManager()->UpdateProfileList(); + } + break; } }