From 106d4025bb4d18e5a0c1efde0d49df9ee4a2629b Mon Sep 17 00:00:00 2001 From: Mr_Goldberg Date: Fri, 3 May 2019 21:54:32 -0400 Subject: [PATCH] Make the inventory result callback respect the result timeout. --- dll/steam_inventory.h | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/dll/steam_inventory.h b/dll/steam_inventory.h index d0c9c6c..2b4d93e 100644 --- a/dll/steam_inventory.h +++ b/dll/steam_inventory.h @@ -46,7 +46,7 @@ public ISteamInventory std::vector inventory_requests; -SteamInventoryResult_t new_inventory_result(const SteamItemInstanceID_t *pInstanceIDs=NULL, uint32 unCountInstanceIDs=0) +struct Steam_Inventory_Requests *new_inventory_result(const SteamItemInstanceID_t *pInstanceIDs=NULL, uint32 unCountInstanceIDs=0) { static SteamInventoryResult_t result; ++result; @@ -60,7 +60,8 @@ SteamInventoryResult_t new_inventory_result(const SteamItemInstanceID_t *pInstan request.time_created = std::chrono::system_clock::now(); inventory_requests.push_back(request); - return request.inventory_result; + + return &(inventory_requests.back()); } struct Steam_Inventory_Requests *get_inventory_result(SteamInventoryResult_t resultHandle) @@ -122,6 +123,7 @@ bool GetResultItems( SteamInventoryResult_t resultHandle, if (!request->result_done()) return false; if (punOutItemsArraySize) *punOutItemsArraySize = 0; + PRINT_DEBUG("GetResultItems good\n"); return true; } @@ -205,24 +207,24 @@ bool GetAllItems( SteamInventoryResult_t *pResultHandle ) PRINT_DEBUG("GetAllItems\n"); std::lock_guard lock(global_mutex); if (pResultHandle) { - SteamInventoryResult_t handle = new_inventory_result(); + struct Steam_Inventory_Requests *request = new_inventory_result(); { // SteamInventoryFullUpdate_t callbacks are triggered when GetAllItems // successfully returns a result which is newer / fresher than the last // known result. //TODO: should this always be returned for each get all item calls? struct SteamInventoryFullUpdate_t data; - data.m_handle = handle; - callbacks->addCBResult(data.k_iCallback, &data, sizeof(data)); + data.m_handle = request->inventory_result; + callbacks->addCBResult(data.k_iCallback, &data, sizeof(data), request->timeout); } { struct SteamInventoryResultReady_t data; - data.m_handle = handle; + data.m_handle = request->inventory_result; data.m_result = k_EResultOK; - callbacks->addCBResult(data.k_iCallback, &data, sizeof(data)); + callbacks->addCBResult(data.k_iCallback, &data, sizeof(data), request->timeout); } - *pResultHandle = handle; + *pResultHandle = request->inventory_result; return true; } @@ -244,15 +246,15 @@ bool GetItemsByID( SteamInventoryResult_t *pResultHandle, STEAM_ARRAY_COUNT( unC PRINT_DEBUG("GetItemsByID\n"); std::lock_guard lock(global_mutex); if (pResultHandle) { - SteamInventoryResult_t handle = new_inventory_result(pInstanceIDs, unCountInstanceIDs); + struct Steam_Inventory_Requests *request = new_inventory_result(pInstanceIDs, unCountInstanceIDs); { struct SteamInventoryResultReady_t data; - data.m_handle = handle; + data.m_handle = request->inventory_result; data.m_result = k_EResultOK; - callbacks->addCBResult(data.k_iCallback, &data, sizeof(data)); + callbacks->addCBResult(data.k_iCallback, &data, sizeof(data), request->timeout); } - *pResultHandle = handle; + *pResultHandle = request->inventory_result; return true; } @@ -328,15 +330,15 @@ bool DeserializeResult( SteamInventoryResult_t *pOutResultHandle, STEAM_BUFFER_C std::lock_guard lock(global_mutex); //TODO if (pOutResultHandle) { - SteamInventoryResult_t handle = new_inventory_result(); + struct Steam_Inventory_Requests *request = new_inventory_result(); { struct SteamInventoryResultReady_t data; - data.m_handle = handle; + data.m_handle = request->inventory_result; data.m_result = k_EResultOK; - callbacks->addCBResult(data.k_iCallback, &data, sizeof(data)); + callbacks->addCBResult(data.k_iCallback, &data, sizeof(data), request->timeout); } - *pOutResultHandle = handle; + *pOutResultHandle = request->inventory_result; return true; }