diff options
Diffstat (limited to 'src/asset-manager.cpp')
| -rw-r--r-- | src/asset-manager.cpp | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/asset-manager.cpp b/src/asset-manager.cpp index 519698e..0ff1cf2 100644 --- a/src/asset-manager.cpp +++ b/src/asset-manager.cpp @@ -218,10 +218,12 @@ pk_bkt_arr *AM_GetAssets() { } void AM_DebugPrint() { + bool b; + pk_iter_t<Asset> iter_asset{}; fprintf(stdout, "Asset Manager printout:\n"); - auto asset_iter_fn = [](void *user_data, void *arr_obj_data) { - (void)user_data; - Asset &asset = *reinterpret_cast<Asset *>(arr_obj_data); + b = pk_bkt_arr_iter_begin(&asset_mstr.bc, &iter_asset); + while (b == true) { + Asset &asset = *iter_asset; printf("-Asset: 0x%.08X 0x%.08X\n", asset.handle.b, asset.handle.i); printf("\tkey: %.16s\n", asset.key); if (asset.basePath != nullptr) { @@ -234,28 +236,33 @@ void AM_DebugPrint() { printf("\tfuture: %i\n", asset.future.valid()); printf("\treferenceCount: %i\n", asset.referenceCount); printf("\tAssetLoadingState: %hhu\n", static_cast<AssetLoadingState_T>(asset.state)); - }; - pk_bkt_arr_iterate(&asset_mstr.bc, asset_iter_fn, NULL); + b = pk_bkt_arr_iter_increment(&asset_mstr.bc, &iter_asset); + } } void AM_GC() { - auto asset_iter_fn = [](void *user_data, void *arr_obj_data) { - (void)user_data; - Asset &asset = *reinterpret_cast<Asset *>(arr_obj_data); + bool b; + pk_iter_t<Asset> iter_asset{}; + b = pk_bkt_arr_iter_begin(&asset_mstr.bc, &iter_asset); + while (b == true) { + Asset &asset = *iter_asset; if (PK_HAS_FLAG(asset.flags, PKE_ASSET_FLAGS_MEM_STATIC)) { fprintf(stdout, "[AM_GC] Asset '%.16s' is static, skipping.\n", asset.key); - return; + b = pk_bkt_arr_iter_increment(&asset_mstr.bc, &iter_asset); + continue; } switch (asset.state) { case PKE_ASSET_LOADING_STATE_LOADING: fprintf(stdout, "[AM_GC] Asset '%.16s' is still loading.\n", asset.key); - break; + b = pk_bkt_arr_iter_increment(&asset_mstr.bc, &iter_asset); + continue; default: void(0); } if (asset.referenceCount > 0) { fprintf(stdout, "[AM_GC] Asset '%.16s' still in use, count: %i\n", asset.key, asset.referenceCount); - return; + b = pk_bkt_arr_iter_increment(&asset_mstr.bc, &iter_asset); + continue; } if (asset.ptr != nullptr && asset.ptr != CAFE_BABE(void)) { pk_delete_base(asset.ptr, asset.size); @@ -265,8 +272,8 @@ void AM_GC() { asset.ptr = CAFE_BABE(void); new (&asset.future) std::future<void>{}; asset.state = PKE_ASSET_LOADING_STATE_UNLOADED; - }; - pk_bkt_arr_iterate(&asset_mstr.bc, asset_iter_fn, NULL); + b = pk_bkt_arr_iter_increment(&asset_mstr.bc, &iter_asset); + } } void AM_Teardown() { |
