Merge pull request #5441 from lioncash/android
MainAndroid: Resolve -Wmissing-variable-declarations warnings
This commit is contained in:
commit
d7d339105b
|
@ -11,6 +11,7 @@
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
#include "ButtonManager.h"
|
#include "ButtonManager.h"
|
||||||
|
@ -44,16 +45,27 @@
|
||||||
#include "VideoCommon/RenderBase.h"
|
#include "VideoCommon/RenderBase.h"
|
||||||
#include "VideoCommon/VideoBackendBase.h"
|
#include "VideoCommon/VideoBackendBase.h"
|
||||||
|
|
||||||
ANativeWindow* surf;
|
#define DOLPHIN_TAG "DolphinEmuNative"
|
||||||
std::string g_filename;
|
|
||||||
std::string g_set_userpath = "";
|
|
||||||
|
|
||||||
JavaVM* g_java_vm;
|
JavaVM* g_java_vm;
|
||||||
jclass g_jni_class;
|
|
||||||
jmethodID g_jni_method_alert;
|
|
||||||
jmethodID g_jni_method_end;
|
|
||||||
|
|
||||||
#define DOLPHIN_TAG "DolphinEmuNative"
|
namespace
|
||||||
|
{
|
||||||
|
ANativeWindow* s_surf;
|
||||||
|
std::string s_filename;
|
||||||
|
std::string s_set_userpath;
|
||||||
|
|
||||||
|
jclass s_jni_class;
|
||||||
|
jmethodID s_jni_method_alert;
|
||||||
|
jmethodID s_jni_method_end;
|
||||||
|
|
||||||
|
// The Core only supports using a single Host thread.
|
||||||
|
// If multiple threads want to call host functions then they need to queue
|
||||||
|
// sequentially for access.
|
||||||
|
std::mutex s_host_identity_lock;
|
||||||
|
Common::Event s_update_main_frame_event;
|
||||||
|
bool s_have_wm_user_stop = false;
|
||||||
|
} // Anonymous namespace
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cache the JavaVM so that we can call into it later.
|
* Cache the JavaVM so that we can call into it later.
|
||||||
|
@ -72,17 +84,11 @@ void Host_RefreshDSPDebuggerWindow()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// The Core only supports using a single Host thread.
|
|
||||||
// If multiple threads want to call host functions then they need to queue
|
|
||||||
// sequentially for access.
|
|
||||||
static std::mutex s_host_identity_lock;
|
|
||||||
Common::Event updateMainFrameEvent;
|
|
||||||
static bool s_have_wm_user_stop = false;
|
|
||||||
void Host_Message(int Id)
|
void Host_Message(int Id)
|
||||||
{
|
{
|
||||||
if (Id == WM_USER_JOB_DISPATCH)
|
if (Id == WM_USER_JOB_DISPATCH)
|
||||||
{
|
{
|
||||||
updateMainFrameEvent.Set();
|
s_update_main_frame_event.Set();
|
||||||
}
|
}
|
||||||
else if (Id == WM_USER_STOP)
|
else if (Id == WM_USER_STOP)
|
||||||
{
|
{
|
||||||
|
@ -94,7 +100,7 @@ void Host_Message(int Id)
|
||||||
|
|
||||||
void* Host_GetRenderHandle()
|
void* Host_GetRenderHandle()
|
||||||
{
|
{
|
||||||
return surf;
|
return s_surf;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Host_UpdateTitle(const std::string& title)
|
void Host_UpdateTitle(const std::string& title)
|
||||||
|
@ -158,7 +164,7 @@ static bool MsgAlert(const char* caption, const char* text, bool yes_no, int /*S
|
||||||
g_java_vm->AttachCurrentThread(&env, NULL);
|
g_java_vm->AttachCurrentThread(&env, NULL);
|
||||||
|
|
||||||
// Execute the Java method.
|
// Execute the Java method.
|
||||||
env->CallStaticVoidMethod(g_jni_class, g_jni_method_alert, env->NewStringUTF(text));
|
env->CallStaticVoidMethod(s_jni_class, s_jni_method_alert, env->NewStringUTF(text));
|
||||||
|
|
||||||
// Must be called before the current thread exits; might as well do it here.
|
// Must be called before the current thread exits; might as well do it here.
|
||||||
g_java_vm->DetachCurrentThread();
|
g_java_vm->DetachCurrentThread();
|
||||||
|
@ -466,7 +472,7 @@ Java_org_dolphinemu_dolphinemu_NativeLibrary_CacheClassesAndMethods(JNIEnv* env,
|
||||||
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_Run(JNIEnv* env, jobject obj);
|
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_Run(JNIEnv* env, jobject obj);
|
||||||
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SurfaceChanged(JNIEnv* env,
|
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SurfaceChanged(JNIEnv* env,
|
||||||
jobject obj,
|
jobject obj,
|
||||||
jobject _surf);
|
jobject surf);
|
||||||
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SurfaceDestroyed(JNIEnv* env,
|
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SurfaceDestroyed(JNIEnv* env,
|
||||||
jobject obj);
|
jobject obj);
|
||||||
|
|
||||||
|
@ -489,7 +495,7 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_StopEmulatio
|
||||||
std::lock_guard<std::mutex> guard(s_host_identity_lock);
|
std::lock_guard<std::mutex> guard(s_host_identity_lock);
|
||||||
Core::SaveScreenShot("thumb", true);
|
Core::SaveScreenShot("thumb", true);
|
||||||
Core::Stop();
|
Core::Stop();
|
||||||
updateMainFrameEvent.Set(); // Kick the waiting event
|
s_update_main_frame_event.Set(); // Kick the waiting event
|
||||||
}
|
}
|
||||||
JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_onGamePadEvent(
|
JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_onGamePadEvent(
|
||||||
JNIEnv* env, jobject obj, jstring jDevice, jint Button, jint Action)
|
JNIEnv* env, jobject obj, jstring jDevice, jint Button, jint Action)
|
||||||
|
@ -634,7 +640,7 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetFilename(
|
||||||
jobject obj,
|
jobject obj,
|
||||||
jstring jFile)
|
jstring jFile)
|
||||||
{
|
{
|
||||||
g_filename = GetJString(env, jFile);
|
s_filename = GetJString(env, jFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SaveState(JNIEnv* env,
|
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SaveState(JNIEnv* env,
|
||||||
|
@ -682,7 +688,7 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetUserDirec
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> guard(s_host_identity_lock);
|
std::lock_guard<std::mutex> guard(s_host_identity_lock);
|
||||||
std::string directory = GetJString(env, jDirectory);
|
std::string directory = GetJString(env, jDirectory);
|
||||||
g_set_userpath = directory;
|
s_set_userpath = directory;
|
||||||
UICommon::SetUserDirectory(directory);
|
UICommon::SetUserDirectory(directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -725,30 +731,30 @@ Java_org_dolphinemu_dolphinemu_NativeLibrary_CacheClassesAndMethods(JNIEnv* env,
|
||||||
jclass localClass = env->FindClass("org/dolphinemu/dolphinemu/NativeLibrary");
|
jclass localClass = env->FindClass("org/dolphinemu/dolphinemu/NativeLibrary");
|
||||||
|
|
||||||
// This reference, however, is valid until we delete it.
|
// This reference, however, is valid until we delete it.
|
||||||
g_jni_class = reinterpret_cast<jclass>(env->NewGlobalRef(localClass));
|
s_jni_class = reinterpret_cast<jclass>(env->NewGlobalRef(localClass));
|
||||||
|
|
||||||
// TODO Find a place for this.
|
// TODO Find a place for this.
|
||||||
// So we don't leak a reference to NativeLibrary.class.
|
// So we don't leak a reference to NativeLibrary.class.
|
||||||
// env->DeleteGlobalRef(g_jni_class);
|
// env->DeleteGlobalRef(s_jni_class);
|
||||||
|
|
||||||
// Method signature taken from javap -s
|
// Method signature taken from javap -s
|
||||||
// Source/Android/app/build/intermediates/classes/arm/debug/org/dolphinemu/dolphinemu/NativeLibrary.class
|
// Source/Android/app/build/intermediates/classes/arm/debug/org/dolphinemu/dolphinemu/NativeLibrary.class
|
||||||
g_jni_method_alert =
|
s_jni_method_alert =
|
||||||
env->GetStaticMethodID(g_jni_class, "displayAlertMsg", "(Ljava/lang/String;)V");
|
env->GetStaticMethodID(s_jni_class, "displayAlertMsg", "(Ljava/lang/String;)V");
|
||||||
g_jni_method_end = env->GetStaticMethodID(g_jni_class, "endEmulationActivity", "()V");
|
s_jni_method_end = env->GetStaticMethodID(s_jni_class, "endEmulationActivity", "()V");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Surface Handling
|
// Surface Handling
|
||||||
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SurfaceChanged(JNIEnv* env,
|
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SurfaceChanged(JNIEnv* env,
|
||||||
jobject obj,
|
jobject obj,
|
||||||
jobject _surf)
|
jobject surf)
|
||||||
{
|
{
|
||||||
surf = ANativeWindow_fromSurface(env, _surf);
|
s_surf = ANativeWindow_fromSurface(env, surf);
|
||||||
if (surf == nullptr)
|
if (s_surf == nullptr)
|
||||||
__android_log_print(ANDROID_LOG_ERROR, DOLPHIN_TAG, "Error: Surface is null.");
|
__android_log_print(ANDROID_LOG_ERROR, DOLPHIN_TAG, "Error: Surface is null.");
|
||||||
|
|
||||||
if (g_renderer)
|
if (g_renderer)
|
||||||
g_renderer->ChangeSurface(surf);
|
g_renderer->ChangeSurface(s_surf);
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SurfaceDestroyed(JNIEnv* env,
|
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SurfaceDestroyed(JNIEnv* env,
|
||||||
|
@ -757,10 +763,10 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SurfaceDestr
|
||||||
if (g_renderer)
|
if (g_renderer)
|
||||||
g_renderer->ChangeSurface(nullptr);
|
g_renderer->ChangeSurface(nullptr);
|
||||||
|
|
||||||
if (surf)
|
if (s_surf)
|
||||||
{
|
{
|
||||||
ANativeWindow_release(surf);
|
ANativeWindow_release(s_surf);
|
||||||
surf = nullptr;
|
s_surf = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_RefreshWiimotes(JNIEnv* env,
|
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_RefreshWiimotes(JNIEnv* env,
|
||||||
|
@ -772,7 +778,7 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_RefreshWiimo
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_Run(JNIEnv* env, jobject obj)
|
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_Run(JNIEnv* env, jobject obj)
|
||||||
{
|
{
|
||||||
__android_log_print(ANDROID_LOG_INFO, DOLPHIN_TAG, "Running : %s", g_filename.c_str());
|
__android_log_print(ANDROID_LOG_INFO, DOLPHIN_TAG, "Running : %s", s_filename.c_str());
|
||||||
|
|
||||||
// Install our callbacks
|
// Install our callbacks
|
||||||
OSD::AddCallback(OSD::CallbackType::Initialization, ButtonManager::Init);
|
OSD::AddCallback(OSD::CallbackType::Initialization, ButtonManager::Init);
|
||||||
|
@ -781,14 +787,14 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_Run(JNIEnv*
|
||||||
RegisterMsgAlertHandler(&MsgAlert);
|
RegisterMsgAlertHandler(&MsgAlert);
|
||||||
|
|
||||||
std::unique_lock<std::mutex> guard(s_host_identity_lock);
|
std::unique_lock<std::mutex> guard(s_host_identity_lock);
|
||||||
UICommon::SetUserDirectory(g_set_userpath);
|
UICommon::SetUserDirectory(s_set_userpath);
|
||||||
UICommon::Init();
|
UICommon::Init();
|
||||||
|
|
||||||
WiimoteReal::InitAdapterClass();
|
WiimoteReal::InitAdapterClass();
|
||||||
|
|
||||||
// No use running the loop when booting fails
|
// No use running the loop when booting fails
|
||||||
s_have_wm_user_stop = false;
|
s_have_wm_user_stop = false;
|
||||||
if (BootManager::BootCore(g_filename.c_str()))
|
if (BootManager::BootCore(s_filename.c_str()))
|
||||||
{
|
{
|
||||||
static constexpr int TIMEOUT = 10000;
|
static constexpr int TIMEOUT = 10000;
|
||||||
static constexpr int WAIT_STEP = 25;
|
static constexpr int WAIT_STEP = 25;
|
||||||
|
@ -802,7 +808,7 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_Run(JNIEnv*
|
||||||
while (Core::IsRunning())
|
while (Core::IsRunning())
|
||||||
{
|
{
|
||||||
guard.unlock();
|
guard.unlock();
|
||||||
updateMainFrameEvent.Wait();
|
s_update_main_frame_event.Wait();
|
||||||
guard.lock();
|
guard.lock();
|
||||||
Core::HostDispatchJobs();
|
Core::HostDispatchJobs();
|
||||||
}
|
}
|
||||||
|
@ -812,14 +818,14 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_Run(JNIEnv*
|
||||||
UICommon::Shutdown();
|
UICommon::Shutdown();
|
||||||
guard.unlock();
|
guard.unlock();
|
||||||
|
|
||||||
if (surf)
|
if (s_surf)
|
||||||
{
|
{
|
||||||
ANativeWindow_release(surf);
|
ANativeWindow_release(s_surf);
|
||||||
surf = nullptr;
|
s_surf = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute the Java method.
|
// Execute the Java method.
|
||||||
env->CallStaticVoidMethod(g_jni_class, g_jni_method_end);
|
env->CallStaticVoidMethod(s_jni_class, s_jni_method_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
Loading…
Reference in New Issue