From d1fecdd7122a0f75e47921aeec293bdf79f8e1c3 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Thu, 1 Feb 2024 17:12:46 +0200 Subject: [PATCH] Bonk --- include/logger.hpp | 14 +++++++------- src/jni_driver.cpp | 8 +++++--- .../pandroid/app/services/LoggerService.java | 12 ++++++------ .../com/panda3ds/pandroid/utils/FileUtils.java | 12 +++++++----- .../pandroid/utils/PerformanceMonitor.java | 12 ++++++------ .../panda3ds/pandroid/view/PandaGlRenderer.java | 6 +++++- .../pandroid/view/utils/PerformanceView.java | 16 +++++++++------- .../app/src/main/res/values-pt-rBR/strings.xml | 2 +- src/pandroid/app/src/main/res/values/strings.xml | 2 +- 9 files changed, 47 insertions(+), 37 deletions(-) diff --git a/include/logger.hpp b/include/logger.hpp index 25074aea..e021a685 100644 --- a/include/logger.hpp +++ b/include/logger.hpp @@ -15,12 +15,12 @@ namespace Log { if constexpr (!enabled) return; std::va_list args; - va_start(args, fmt); - #ifdef __ANDROID__ - __android_log_vprint(ANDROID_LOG_DEFAULT, "Panda3DS", fmt, args); - #else - std::vprintf(fmt, args); - #endif + va_start(args, fmt); +#ifdef __ANDROID__ + __android_log_vprint(ANDROID_LOG_DEFAULT, "Panda3DS", fmt, args); +#else + std::vprintf(fmt, args); +#endif va_end(args); } }; @@ -89,4 +89,4 @@ namespace Log { #else #define MAKE_LOG_FUNCTION(functionName, logger) MAKE_LOG_FUNCTION_USER(functionName, logger) #endif -} +} \ No newline at end of file diff --git a/src/jni_driver.cpp b/src/jni_driver.cpp index d6380d2f..d962f23e 100644 --- a/src/jni_driver.cpp +++ b/src/jni_driver.cpp @@ -16,9 +16,6 @@ JavaVM* jvm = nullptr; #define AlberFunction(type, name) JNIEXPORT type JNICALL Java_com_panda3ds_pandroid_AlberDriver_##name -#define MAKE_SETTING(functionName, type, settingName) \ -AlberFunction(void, functionName) (JNIEnv* env, jobject obj, type value) { emulator->getConfig().settingName = value; } - void throwException(JNIEnv* env, const char* message) { jclass exceptionClass = env->FindClass("java/lang/RuntimeException"); env->ThrowNew(exceptionClass, message); @@ -38,8 +35,13 @@ JNIEnv* jniEnv() { extern "C" { +#define MAKE_SETTING(functionName, type, settingName) \ +AlberFunction(void, functionName) (JNIEnv* env, jobject obj, type value) { emulator->getConfig().settingName = value; } + MAKE_SETTING(setShaderJitEnabled, jboolean, shaderJitEnabled) +#undef MAKE_SETTING + AlberFunction(void, Setup)(JNIEnv* env, jobject obj) { env->GetJavaVM(&jvm); } AlberFunction(void, Pause)(JNIEnv* env, jobject obj) { emulator->pause(); } AlberFunction(void, Resume)(JNIEnv* env, jobject obj) { emulator->resume(); } diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/services/LoggerService.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/services/LoggerService.java index bf73ec3b..e44f3503 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/services/LoggerService.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/services/LoggerService.java @@ -55,15 +55,15 @@ public class LoggerService extends Service { errorTask.start(); outputTask.start(); - Log.i(Constants.LOG_TAG, "STARTED LOGGER SERVICE"); - printDeviceAbout(); + Log.i(Constants.LOG_TAG, "Started logger service"); + logDeviceInfo(); } catch (Exception e) { stopSelf(); - Log.e(Constants.LOG_TAG, "Failed to start LoggerService!"); + Log.e(Constants.LOG_TAG, "Failed to start logger service"); } } - private void printDeviceAbout() { + private void logDeviceInfo() { Log.i(Constants.LOG_TAG, "----------------------"); Log.i(Constants.LOG_TAG, "Android SDK: " + Build.VERSION.SDK_INT); Log.i(Constants.LOG_TAG, "Device: " + Build.DEVICE); @@ -76,7 +76,7 @@ public class LoggerService extends Service { Log.i(Constants.LOG_TAG, "Install location: " + info.installLocation); Log.i(Constants.LOG_TAG, "App version: " + info.versionName + " (" + info.versionCode + ")"); } catch (Exception e) { - Log.e(Constants.LOG_TAG, "Error on obtain package info: " + e); + Log.e(Constants.LOG_TAG, "Error obtaining package info: " + e); } Log.i(Constants.LOG_TAG, "----------------------"); } @@ -93,7 +93,7 @@ public class LoggerService extends Service { @Override public void onDestroy() { - Log.i(Constants.LOG_TAG, "FINISHED LOGGER SERVICE"); + Log.i(Constants.LOG_TAG, "Logger service terminating"); errorTask.close(); outputTask.close(); try { diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/FileUtils.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/FileUtils.java index 7e6003d1..1746f1c9 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/FileUtils.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/FileUtils.java @@ -74,15 +74,17 @@ public class FileUtils { parseFile(path).renameTo(newName); } - public static void delete(String path){ + public static void delete(String path) { DocumentFile file = parseFile(path); - if (file.exists()){ - if (file.isDirectory()){ + + if (file.exists()) { + if (file.isDirectory()) { String[] children = listFiles(path); - for (String child: children){ - delete(path+"/"+child); + for (String child : children) { + delete(path + "/" + child); } } + file.delete(); } } diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/PerformanceMonitor.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/PerformanceMonitor.java index 288dbc39..2efed8b2 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/PerformanceMonitor.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/utils/PerformanceMonitor.java @@ -14,7 +14,7 @@ public class PerformanceMonitor { private static int frames = 0; private static long lastUpdate = 0; private static long totalMemory = 1; - private static long availMemory = 0; + private static long availableMemory = 0; public static void initialize(String backendName) { fps = 1; @@ -35,21 +35,21 @@ public class PerformanceMonitor { manager.getMemoryInfo(info); totalMemory = info.totalMem; availMemory = info.availMem; - } catch (Exception e) {/**/} + } catch (Exception e) {} } } } - public static long getUsageMemory() { - return Math.max(1, totalMemory - availMemory); + public static long getUsedMemory() { + return Math.max(1, totalMemory - availableMemory); } public static long getTotalMemory() { return totalMemory; } - public static long getAvailMemory() { - return availMemory; + public static long getAvailableMemory() { + return availableMemory; } public static int getFps() { diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/PandaGlRenderer.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/PandaGlRenderer.java index 329324e9..c39b36b3 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/PandaGlRenderer.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/PandaGlRenderer.java @@ -40,9 +40,11 @@ public class PandaGlRenderer implements GLSurfaceView.Renderer, ConsoleRenderer if (screenTexture != 0) { glDeleteTextures(1, new int[] {screenTexture}, 0); } - if (screenFbo != 0) { + + if (screenFbo != 0) { glDeleteFramebuffers(1, new int[] {screenFbo}, 0); } + PerformanceMonitor.destroy(); super.finalize(); } @@ -96,6 +98,7 @@ public class PandaGlRenderer implements GLSurfaceView.Renderer, ConsoleRenderer GameUtils.removeGame(game); GameUtils.addGame(GameMetadata.applySMDH(game, smdh)); } + PerformanceMonitor.initialize(getBackendName()); } @@ -119,6 +122,7 @@ public class PandaGlRenderer implements GLSurfaceView.Renderer, ConsoleRenderer screenHeight - bottomScreen.bottom, GL_COLOR_BUFFER_BIT, GL_LINEAR ); } + PerformanceMonitor.runFrame(); } diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/utils/PerformanceView.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/utils/PerformanceView.java index f355b030..e4d7be15 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/utils/PerformanceView.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/utils/PerformanceView.java @@ -36,18 +36,19 @@ public class PerformanceView extends AppCompatTextView { public void refresh(){ running = isShown(); - if (!running){ + if (!running) { return; } String debug = ""; - int memoryTotalMb = (int) Math.round((PerformanceMonitor.getTotalMemory()/1024.0)/1024.0); - int memoryUsageMb = (int) Math.round((PerformanceMonitor.getUsageMemory()/1024.0)/1024.0); + // Calculate total memory in MB and the current memory usage + int memoryTotalMb = (int) Math.round(PerformanceMonitor.getTotalMemory() / (1024.0 * 1024.0)); + int memoryUsageMb = (int) Math.round(PerformanceMonitor.getUsedMemory() / (1024.0 * 1024.0)); - debug += "FPS: "+PerformanceMonitor.getFps()+"
"; - debug += "RAM: "+Math.round(((float) memoryUsageMb / memoryTotalMb)*100)+"% ("+memoryUsageMb+"MB/"+memoryTotalMb+"MB)
"; - debug += "BACKEND: "+PerformanceMonitor.getBackend()+(GlobalConfig.get(GlobalConfig.KEY_SHADER_JIT) ? " + JIT" : "")+"
"; + debug += "FPS: " + PerformanceMonitor.getFps() + "
"; + debug += "RAM: " + Math.round(((float) memoryUsageMb / memoryTotalMb) * 100) + "% (" + memoryUsageMb + "MB/" + memoryTotalMb + "MB)
"; + debug += "BACKEND: " + PerformanceMonitor.getBackend() + (GlobalConfig.get(GlobalConfig.KEY_SHADER_JIT) ? " + JIT" : "") + "
"; setText(Html.fromHtml(debug, Html.FROM_HTML_MODE_COMPACT)); postDelayed(this::refresh, 250); } @@ -55,7 +56,8 @@ public class PerformanceView extends AppCompatTextView { @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - if (!running){ + + if (!running) { refresh(); } } diff --git a/src/pandroid/app/src/main/res/values-pt-rBR/strings.xml b/src/pandroid/app/src/main/res/values-pt-rBR/strings.xml index 8badc3cc..1198d66b 100644 --- a/src/pandroid/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/pandroid/app/src/main/res/values-pt-rBR/strings.xml @@ -52,6 +52,6 @@ Depuração Grave os registros para um arquivo. Shader Jit - Usar recompilador de shaders + Usar recompilador de shaders. Gráficos diff --git a/src/pandroid/app/src/main/res/values/strings.xml b/src/pandroid/app/src/main/res/values/strings.xml index be6c36a8..4c64439c 100644 --- a/src/pandroid/app/src/main/res/values/strings.xml +++ b/src/pandroid/app/src/main/res/values/strings.xml @@ -53,6 +53,6 @@ Logger Store application logs to file. Shader JIT - Use shader re-compiler + Use shader recompiler. Graphics