From d007fac5364823fbdfdde1081ea3c30fde5e6810 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Wed, 28 Jul 2021 22:27:26 -0400 Subject: [PATCH] Limit the scope of callback suppression. Per testing on Minkata, suppressing callbacks during all vault downloads has a deleterious effect on imagers. While my high level assumption is correct, vault downloads can encompass situations where we want notifications (eg re-downloading imager inbox folders, new age info vault fragments). Whoops! --- .../plNetClient/plNetCliAgeJoiner.cpp | 2 +- .../plNetClientComm/plNetClientComm.cpp | 4 +- .../PubUtilLib/plVault/plVaultClientApi.cpp | 52 ++++++++++++++++--- .../PubUtilLib/plVault/plVaultClientApi.h | 8 +++ 4 files changed, 55 insertions(+), 11 deletions(-) diff --git a/Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeJoiner.cpp b/Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeJoiner.cpp index d934ed81..6581052d 100644 --- a/Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeJoiner.cpp +++ b/Sources/Plasma/PubUtilLib/plNetClient/plNetCliAgeJoiner.cpp @@ -385,7 +385,7 @@ bool plNCAgeJoiner::MsgReceive (plMessage * msg) { } else if (unsigned ageVaultId = NetCommGetAge()->ageVaultId) { // Download the age vault - VaultDownload( + VaultDownloadNoCallbacks( L"AgeJoin", ageVaultId, AgeVaultDownloadCallback, diff --git a/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.cpp b/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.cpp index 3ebb2dc0..342897b7 100644 --- a/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.cpp +++ b/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.cpp @@ -318,7 +318,7 @@ static void INetCliAuthSetPlayerRequestCallback ( else { s_needAvatarLoad = true; - VaultDownload( + VaultDownloadNoCallbacks( L"SetActivePlayer", s_player->playerInt, PlayerInitCallback, @@ -374,7 +374,7 @@ static void INetCliAuthLoginSetPlayerRequestCallback ( msg->Send(); } else { - VaultDownload( + VaultDownloadNoCallbacks( L"SetActivePlayer", s_player->playerInt, LoginPlayerInitCallback, diff --git a/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp b/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp index 98b4eb03..66a91d4b 100644 --- a/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp +++ b/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp @@ -185,7 +185,6 @@ struct VaultDownloadTrans { : callback(), cbParam(), progressCallback(), cbProgressParam(), nodeCount(), nodesLeft(), vaultId(), result(kNetSuccess) { - VaultSuppressCallbacks(); } VaultDownloadTrans(const wchar_t* _tag, FVaultDownloadCallback _callback, @@ -195,15 +194,11 @@ struct VaultDownloadTrans { cbProgressParam(_cbProgressParam), nodeCount(), nodesLeft(), vaultId(_vaultId), result(kNetSuccess) { - StrCopy(tag, _tag, MAX_PATH); - VaultSuppressCallbacks(); + StrCopy(tag, _tag, arrsize(tag)); } - ~VaultDownloadTrans() - { - VaultEnableCallbacks(); - } - + virtual ~VaultDownloadTrans() { } + static void VaultNodeFetched ( ENetError result, void * param, @@ -217,6 +212,28 @@ struct VaultDownloadTrans { ); }; + +struct VaultDownloadNoCallbacksTrans : VaultDownloadTrans { + VaultDownloadNoCallbacksTrans() + : VaultDownloadTrans() + { + VaultSuppressCallbacks(); + } + + VaultDownloadNoCallbacksTrans(const wchar_t* _tag, FVaultDownloadCallback _callback, + void* _cbParam, FVaultProgressCallback _progressCallback, + void* _cbProgressParam, unsigned _vaultId) + : VaultDownloadTrans(_tag, _callback, _cbParam, _progressCallback, _cbProgressParam, _vaultId) + { + VaultSuppressCallbacks(); + } + + ~VaultDownloadNoCallbacksTrans() + { + VaultEnableCallbacks(); + } +}; + struct VaultAgeInitTrans { FVaultInitAgeCallback callback; void * cbState; @@ -4995,6 +5012,25 @@ void VaultDownload ( ); } +//============================================================================ +void VaultDownloadNoCallbacks ( + const wchar tag[], + unsigned vaultId, + FVaultDownloadCallback callback, + void* cbParam, + FVaultProgressCallback progressCallback, + void* cbProgressParam +) { + VaultDownloadNoCallbacksTrans* trans = new VaultDownloadNoCallbacksTrans(tag, callback, + cbParam, progressCallback, cbProgressParam, vaultId); + + NetCliAuthVaultFetchNodeRefs( + vaultId, + VaultDownloadTrans::VaultNodeRefsFetched, + trans + ); +} + //============================================================================ struct _DownloadVaultParam { ENetError result; diff --git a/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.h b/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.h index 3ecd968b..ba38536f 100644 --- a/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.h +++ b/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.h @@ -488,6 +488,14 @@ void VaultDownload ( FVaultProgressCallback progressCallback, void * cbProgressParam ); +void VaultDownloadNoCallbacks( + const wchar tag[], + unsigned vaultId, + FVaultDownloadCallback callback, + void* cbParam, + FVaultProgressCallback progressCallback, + void* cbProgressParam +); void VaultDownloadAndWait ( const wchar tag[], unsigned vaultId,