Skip to content

Commit 5f1dae0

Browse files
seems APK archive doesn't need to hang onto JNI
1 parent c13abd6 commit 5f1dae0

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

src/nbl/system/CAPKResourcesArchive.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,15 @@ using namespace nbl;
44
using namespace nbl::system;
55

66
#ifdef _NBL_PLATFORM_ANDROID_
7-
#include <jni.h>
87
#include <android/native_activity.h>
98
#include <android/asset_manager.h>
109

11-
CAPKResourcesArchive::CAPKResourcesArchive(const path& _path, system::logger_opt_smart_ptr&& logger, ANativeActivity* act, JNIEnv* jni)
12-
: CFileArchive(path(_path),std::move(logger),computeItems(_path.string())), m_mgr(act->assetManager), m_activity(act), m_jniEnv(jni)
10+
CAPKResourcesArchive::CAPKResourcesArchive(const path& _path, system::logger_opt_smart_ptr&& logger, ANativeActivity* act, JNIEnv* jniEnv)
11+
: CFileArchive(path(_path),std::move(logger),computeItems(_path.string(),act->assetManager,jniEnv)), m_mgr(act->assetManager), m_activity(act)
1312
{
1413
}
1514

16-
core::vector<IFileArchive::SListEntry> CAPKResourcesArchive::computeItems(const std::string& asset_path)
15+
core::vector<IFileArchive::SListEntry> CAPKResourcesArchive::computeItems(const std::string& asset_path, AAssetManager* mgr, JNIEnv* env)
1716
{
1817
auto context_object = activity->clazz;
1918
auto getAssets_method = env->GetMethodID(env->GetObjectClass(context_object), "getAssets", "()Landroid/content/res/AssetManager;");
@@ -39,7 +38,7 @@ core::vector<IFileArchive::SListEntry> CAPKResourcesArchive::computeItems(const
3938
auto& item = result.emplace_back();
4039
item.pathRelativeToArchive = filename;
4140
{
42-
AAsset* asset = AAssetManager_open(m_mgr,filename,AASSET_MODE_STREAMING);
41+
AAsset* asset = AAssetManager_open(mgr,filename,AASSET_MODE_STREAMING);
4342
item.size = AAsset_getLength(asset);
4443
AAsset_close(asset);
4544
}
@@ -57,7 +56,7 @@ core::vector<IFileArchive::SListEntry> CAPKResourcesArchive::computeItems(const
5756
CFileArchive::file_buffer_t CAPKResourcesArchive::getFileBuffer(const IFileArchive::SListEntry* item)
5857
{
5958
AAsset* asset = AAssetManager_open(m_mgr,item->pathRelativeToArchive.string().c_str(),AASSET_MODE_BUFFER);
60-
return {const_cast<void*>(AAsset_getBuffer(asset)),AAsset_getLength(asset),asset};
59+
return {const_cast<void*>(AAsset_getBuffer(asset)),static_cast<size_t>(AAsset_getLength(asset)),asset};
6160
}
6261

6362
#endif

src/nbl/system/CAPKResourcesArchive.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace nbl::system
1717
class CAPKResourcesArchive final : public CFileArchive
1818
{
1919
public:
20-
CAPKResourcesArchive(const path& _path, system::logger_opt_smart_ptr&& logger, ANativeActivity* act, JNIEnv* jni);
20+
CAPKResourcesArchive(const path& _path, system::logger_opt_smart_ptr&& logger, ANativeActivity* act, JNIEnv* jniEnv);
2121

2222
protected:
2323
static core::vector<SListEntry> computeItems(const std::string& asset_path);
@@ -26,7 +26,6 @@ class CAPKResourcesArchive final : public CFileArchive
2626

2727

2828
AAssetManager* m_mgr;
29-
JNIEnv* m_jniEnv;
3029
ANativeActivity* m_activity;
3130
};
3231

0 commit comments

Comments
 (0)