Merge "Replace AndroidRuntime::getJNIEnv() with stable methods"

gugelfrei
TreeHugger Robot 5 years ago committed by Android (Google) Code Review
commit 484d6119d3

@ -42,6 +42,7 @@ cc_library_shared {
name: "libmediandk",
srcs: [
"NdkJavaVMHelper.cpp",
"NdkMediaCodec.cpp",
"NdkMediaCrypto.cpp",
"NdkMediaDataSource.cpp",
@ -94,6 +95,7 @@ cc_library_shared {
"libgui",
"libui",
"libmediandk_utils",
"libnativehelper",
],
export_include_dirs: ["include"],

@ -0,0 +1,42 @@
/*
* Copyright 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "NdkJavaVMHelper"
#include <media/NdkJavaVMHelper.h>
#include <utils/Log.h>
namespace android {
// static
JNIEnv *NdkJavaVMHelper::getJNIEnv() {
JNIEnv *env;
jsize nVMs;
JavaVM *vm;
int status = JNI_GetCreatedJavaVMs(&vm, 1, &nVMs);
if (status != JNI_OK || nVMs == 0 || vm == NULL) {
ALOGE("Failed to get JVM instance");
return NULL;
} else if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
ALOGE("Failed to get JNIEnv for JavaVM: %p", vm);
return NULL;
}
return env;
}
} // namespace android

@ -30,6 +30,7 @@
#include <datasource/HTTPBase.h>
#include <datasource/NuCachedSource2.h>
#include <media/IMediaHTTPService.h>
#include <media/NdkJavaVMHelper.h>
#include <media/NdkMediaError.h>
#include <media/NdkMediaDataSource.h>
#include <media/stagefright/InterfaceUtils.h>
@ -167,7 +168,8 @@ sp<MediaHTTPService> createMediaHttpService(const char *uri) {
JNIEnv *env;
const char *clazz, *method, *signature;
env = AndroidRuntime::getJNIEnv();
env = NdkJavaVMHelper::getJNIEnv();
clazz = "android/media/MediaHTTPService";
method = "createHttpServiceBinderIfNecessary";
signature = "(Ljava/lang/String;)Landroid/os/IBinder;";

@ -0,0 +1,31 @@
/*
* Copyright 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef NDK_JAVA_VM_HELPER_H_
#define NDK_JAVA_VM_HELPER_H_
#include "jni.h"
namespace android {
struct NdkJavaVMHelper {
static JNIEnv *getJNIEnv();
};
} // namespace android
#endif // NDK_JAVA_VM_HELPER_H_
Loading…
Cancel
Save