ANDROID: Wrap JNI code in a class

This commit is contained in:
dhewg 2011-02-23 22:44:33 +01:00
parent c4706733d4
commit f80d993860
6 changed files with 265 additions and 183 deletions

View file

@ -36,10 +36,9 @@
#include "common/archive.h"
#include "common/debug.h"
#include "backends/platform/android/jni.h"
#include "backends/platform/android/asset-archive.h"
extern JNIEnv *JNU_GetEnv();
// Must match android.content.res.AssetManager.ACCESS_*
const jint ACCESS_UNKNOWN = 0;
const jint ACCESS_RANDOM = 1;
@ -124,7 +123,7 @@ JavaInputStream::JavaInputStream(JNIEnv *env, jobject is) :
}
JavaInputStream::~JavaInputStream() {
JNIEnv *env = JNU_GetEnv();
JNIEnv *env = JNI::getEnv();
close(env);
env->DeleteGlobalRef(_buf);
@ -139,7 +138,7 @@ void JavaInputStream::close(JNIEnv *env) {
}
uint32 JavaInputStream::read(void *dataPtr, uint32 dataSize) {
JNIEnv *env = JNU_GetEnv();
JNIEnv *env = JNI::getEnv();
if (_buflen < jint(dataSize)) {
_buflen = dataSize;
@ -171,7 +170,7 @@ uint32 JavaInputStream::read(void *dataPtr, uint32 dataSize) {
}
bool JavaInputStream::seek(int32 offset, int whence) {
JNIEnv *env = JNU_GetEnv();
JNIEnv *env = JNI::getEnv();
uint32 newpos;
switch (whence) {
@ -318,7 +317,7 @@ AssetFdReadStream::AssetFdReadStream(JNIEnv *env, jobject assetfd) :
}
AssetFdReadStream::~AssetFdReadStream() {
JNIEnv *env = JNU_GetEnv();
JNIEnv *env = JNI::getEnv();
env->CallVoidMethod(_assetfd, MID_close);
if (env->ExceptionCheck())
@ -369,7 +368,7 @@ bool AssetFdReadStream::seek(int32 offset, int whence) {
}
AndroidAssetArchive::AndroidAssetArchive(jobject am) {
JNIEnv *env = JNU_GetEnv();
JNIEnv *env = JNI::getEnv();
_am = env->NewGlobalRef(am);
jclass cls = env->GetObjectClass(_am);
@ -387,12 +386,12 @@ AndroidAssetArchive::AndroidAssetArchive(jobject am) {
}
AndroidAssetArchive::~AndroidAssetArchive() {
JNIEnv *env = JNU_GetEnv();
JNIEnv *env = JNI::getEnv();
env->DeleteGlobalRef(_am);
}
bool AndroidAssetArchive::hasFile(const Common::String &name) {
JNIEnv *env = JNU_GetEnv();
JNIEnv *env = JNI::getEnv();
jstring path = env->NewStringUTF(name.c_str());
jobject result = env->CallObjectMethod(_am, MID_open, path, ACCESS_UNKNOWN);
if (env->ExceptionCheck()) {
@ -412,7 +411,7 @@ bool AndroidAssetArchive::hasFile(const Common::String &name) {
}
int AndroidAssetArchive::listMembers(Common::ArchiveMemberList &member_list) {
JNIEnv *env = JNU_GetEnv();
JNIEnv *env = JNI::getEnv();
Common::List<Common::String> dirlist;
dirlist.push_back("");
@ -469,7 +468,7 @@ Common::ArchiveMemberPtr AndroidAssetArchive::getMember(const Common::String &na
}
Common::SeekableReadStream *AndroidAssetArchive::createReadStreamForMember(const Common::String &path) const {
JNIEnv *env = JNU_GetEnv();
JNIEnv *env = JNI::getEnv();
jstring jpath = env->NewStringUTF(path.c_str());
// Try openFd() first ...