Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e49268af authored by Marco Nelissen's avatar Marco Nelissen Committed by Android (Google) Code Review
Browse files

Merge "Make sure that the event callback thread is Java capable in the simulator."

parents 35abad21 7691af90
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -85,6 +85,8 @@ LOCAL_SHARED_LIBRARIES += \

ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)
        LOCAL_LDLIBS += -lpthread -ldl
        LOCAL_SHARED_LIBRARIES += libdvm
        LOCAL_CPPFLAGS += -DANDROID_SIMULATOR
endif

ifneq ($(TARGET_SIMULATOR),true)
+22 −0
Original line number Diff line number Diff line
@@ -28,6 +28,10 @@

#include <media/stagefright/MediaDebug.h>

#ifdef ANDROID_SIMULATOR
#include <jni.h>
#endif

namespace android {

TimedEventQueue::TimedEventQueue()
@@ -183,8 +187,26 @@ int64_t TimedEventQueue::getRealTimeUs() {

// static
void *TimedEventQueue::ThreadWrapper(void *me) {

#ifdef ANDROID_SIMULATOR
    // The simulator runs everything as one process, so any
    // Binder calls happen on this thread instead of a thread
    // in another process. We therefore need to make sure that
    // this thread can do calls into interpreted code.
    // On the device this is not an issue because the remote
    // thread will already be set up correctly for this.
    JavaVM *vm;
    int numvms;
    JNI_GetCreatedJavaVMs(&vm, 1, &numvms);
    JNIEnv *env;
    vm->AttachCurrentThread(&env, NULL);
#endif

    static_cast<TimedEventQueue *>(me)->threadEntry();

#ifdef ANDROID_SIMULATOR
    vm->DetachCurrentThread();
#endif
    return NULL;
}