use C-style ResourceBuffer on Android

This commit is contained in:
Nick Fisher
2022-08-20 00:18:18 +10:00
parent 9779de09c3
commit 8dfe219637

View File

@@ -1,5 +1,6 @@
#include "FilamentViewer.hpp" #include "FilamentViewer.hpp"
#include "SceneAsset.hpp" #include "SceneAsset.hpp"
#include "ResourceBuffer.hpp"
#include <android/asset_manager.h> #include <android/asset_manager.h>
#include <android/asset_manager_jni.h> #include <android/asset_manager_jni.h>
#include <android/native_window_jni.h> #include <android/native_window_jni.h>
@@ -15,14 +16,14 @@ uint64_t id = -1;
static FilamentViewer* _viewer; static FilamentViewer* _viewer;
static polyvox::ResourceBuffer loadResource(const char* name) { static ResourceBuffer loadResource(const char* name) {
id++; id++;
AAsset *asset = AAssetManager_open(am, name, AASSET_MODE_BUFFER); AAsset *asset = AAssetManager_open(am, name, AASSET_MODE_BUFFER);
if(asset == nullptr) { if(asset == nullptr) {
__android_log_print(ANDROID_LOG_VERBOSE, "filament_api", "Couldn't locate asset [ %s ]", name); __android_log_print(ANDROID_LOG_VERBOSE, "filament_api", "Couldn't locate asset [ %s ]", name);
return polyvox::ResourceBuffer(nullptr, 0, 0); return ResourceBuffer(nullptr, 0, 0);
} }
__android_log_print(ANDROID_LOG_VERBOSE, "filament_api", "Loading asset [ %s ]", name); __android_log_print(ANDROID_LOG_VERBOSE, "filament_api", "Loading asset [ %s ]", name);
off_t length = AAsset_getLength(asset); off_t length = AAsset_getLength(asset);
@@ -37,15 +38,15 @@ static polyvox::ResourceBuffer loadResource(const char* name) {
} }
static void freeResource(ResourceBuffer rb) { static void freeResource(uint32_t id) {
__android_log_print(ANDROID_LOG_VERBOSE, "filament_api", "Freeing loaded resource at index [ %d ] ", rb.id); __android_log_print(ANDROID_LOG_VERBOSE, "filament_api", "Freeing loaded resource at index [ %d ] ", id);
AAsset* asset = _assets[rb.id]; AAsset* asset = _assets[id];
if(asset) { if(asset) {
AAsset_close(asset); AAsset_close(asset);
} else { } else {
__android_log_print(ANDROID_LOG_VERBOSE, "filament_api", "Attempting to free resource at index [ %d ] that has already been released.", rb.id); __android_log_print(ANDROID_LOG_VERBOSE, "filament_api", "Attempting to free resource at index [ %d ] that has already been released.", id);
} }
_assets[rb.id] = nullptr; _assets[id] = nullptr;
} }
extern "C" { extern "C" {