Browse Source

Android: Fixed a linker error when building in release mode

tags/2021-05-28
hogliux 8 years ago
parent
commit
ccb4ce8829
3 changed files with 17 additions and 12 deletions
  1. +1
    -12
      modules/juce_audio_devices/native/juce_android_OpenSL.cpp
  2. +3
    -0
      modules/juce_core/native/juce_android_JNIHelpers.h
  3. +13
    -0
      modules/juce_core/native/juce_android_SystemStats.cpp

+ 1
- 12
modules/juce_audio_devices/native/juce_android_OpenSL.cpp View File

@@ -261,11 +261,6 @@ struct BufferHelpers<float>
} }
}; };
//==============================================================================
// need this from juce_core without asserting
struct JniEnvThreadHolder { static JNIEnv* getEnv(); };
extern JavaVM* androidJNIJavaVM;
//============================================================================== //==============================================================================
class OpenSLAudioIODevice : public AudioIODevice class OpenSLAudioIODevice : public AudioIODevice
{ {
@@ -325,13 +320,7 @@ public:
void finished (SLAndroidSimpleBufferQueueItf) void finished (SLAndroidSimpleBufferQueueItf)
{ {
if (JniEnvThreadHolder::getEnv() == nullptr)
{
JNIEnv* env;
androidJNIJavaVM->AttachCurrentThread (&env, nullptr);
setEnv (env);
}
attachAndroidJNI();
--numBlocksOut; --numBlocksOut;
owner.doSomeWorkOnAudioThread(); owner.doSomeWorkOnAudioThread();


+ 3
- 0
modules/juce_core/native/juce_android_JNIHelpers.h View File

@@ -33,6 +33,9 @@ extern JNIEnv* getEnv() noexcept;
// on a java thread which you did not create yourself. // on a java thread which you did not create yourself.
extern void setEnv (JNIEnv* env) noexcept; extern void setEnv (JNIEnv* env) noexcept;
/* @internal */
extern JNIEnv* attachAndroidJNI() noexcept;
//============================================================================== //==============================================================================
class GlobalRef class GlobalRef
{ {


+ 13
- 0
modules/juce_core/native/juce_android_SystemStats.cpp View File

@@ -158,6 +158,19 @@ private:
JniEnvThreadHolder* JniEnvThreadHolder::instance = nullptr; JniEnvThreadHolder* JniEnvThreadHolder::instance = nullptr;
//============================================================================== //==============================================================================
JNIEnv* attachAndroidJNI() noexcept
{
auto* env = JniEnvThreadHolder::getEnv();
if (env == nullptr)
{
androidJNIJavaVM->AttachCurrentThread (&env, nullptr);
setEnv (env);
}
return env;
}
JNIEnv* getEnv() noexcept JNIEnv* getEnv() noexcept
{ {
auto* env = JniEnvThreadHolder::getEnv(); auto* env = JniEnvThreadHolder::getEnv();


Loading…
Cancel
Save