diff options
Diffstat (limited to 'src/android')
10 files changed, 58 insertions, 32 deletions
| diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt index ed8fe6c3f..9ebd6c732 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt @@ -252,7 +252,7 @@ object NativeLibrary {      external fun reloadKeys(): Boolean -    external fun initializeSystem() +    external fun initializeSystem(reload: Boolean)      external fun defaultCPUCore(): Int diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt index 8c053670c..d114bd53d 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt @@ -11,6 +11,7 @@ import java.io.File  import org.yuzu.yuzu_emu.utils.DirectoryInitialization  import org.yuzu.yuzu_emu.utils.DocumentsTree  import org.yuzu.yuzu_emu.utils.GpuDriverHelper +import org.yuzu.yuzu_emu.utils.Log  fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir @@ -49,6 +50,7 @@ class YuzuApplication : Application() {          DirectoryInitialization.start()          GpuDriverHelper.initializeDriverParameters()          NativeLibrary.logDeviceInfo() +        Log.logDeviceInfo()          createNotificationChannels()      } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt index da98d4ef5..054e4b755 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt @@ -107,7 +107,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {          val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)          if (!preferences.getBoolean(Settings.PREF_MEMORY_WARNING_SHOWN, false)) { -            if (MemoryUtil.isLessThan(MemoryUtil.REQUIRED_MEMORY, MemoryUtil.Gb)) { +            if (MemoryUtil.isLessThan(MemoryUtil.REQUIRED_MEMORY, MemoryUtil.totalMemory)) {                  Toast.makeText(                      this,                      getString( diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt index 07bd78bf7..c456c0592 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt @@ -312,6 +312,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {                              ViewUtils.showView(binding.surfaceInputOverlay)                              ViewUtils.hideView(binding.loadingIndicator) +                            emulationState.updateSurface() +                              // Setup overlay                              updateShowFpsOverlay()                          } @@ -805,6 +807,13 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {          }          @Synchronized +        fun updateSurface() { +            if (surface != null) { +                NativeLibrary.surfaceChanged(surface) +            } +        } + +        @Synchronized          fun clearSurface() {              if (surface == null) {                  Log.warning("[EmulationFragment] clearSurface called, but surface already null.") diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt index ba1177426..211b7cf69 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt @@ -403,7 +403,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {                      } else {                          firmwarePath.deleteRecursively()                          cacheFirmwareDir.copyRecursively(firmwarePath, true) -                        NativeLibrary.initializeSystem() +                        NativeLibrary.initializeSystem(true)                          getString(R.string.save_file_imported_success)                      }                  } catch (e: Exception) { @@ -649,7 +649,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {                  }                  // Reinitialize relevant data -                NativeLibrary.initializeSystem() +                NativeLibrary.initializeSystem(true)                  gamesViewModel.reloadGames(false)                  return@newInstance getString(R.string.user_data_import_success) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt index 79a07f7ef..5e9a1176a 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt @@ -15,7 +15,7 @@ object DirectoryInitialization {      fun start() {          if (!areDirectoriesReady) {              initializeInternalStorage() -            NativeLibrary.initializeSystem() +            NativeLibrary.initializeSystem(false)              areDirectoriesReady = true          }      } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt index fb682c344..aebe84b0f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt @@ -3,6 +3,8 @@  package org.yuzu.yuzu_emu.utils +import android.os.Build +  object Log {      // Tracks whether we should share the old log or the current log      var gameLaunched = false @@ -16,4 +18,14 @@ object Log {      external fun error(message: String)      external fun critical(message: String) + +    fun logDeviceInfo() { +        info("Device Manufacturer - ${Build.MANUFACTURER}") +        info("Device Model - ${Build.MODEL}") +        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) { +            info("SoC Manufacturer - ${Build.SOC_MANUFACTURER}") +            info("SoC Model - ${Build.SOC_MODEL}") +        } +        info("Total System Memory - ${MemoryUtil.getDeviceRAM()}") +    }  } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/MemoryUtil.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/MemoryUtil.kt index aa4a5539a..9076a86c4 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/MemoryUtil.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/MemoryUtil.kt @@ -27,7 +27,7 @@ object MemoryUtil {      const val Pb = Tb * 1024      const val Eb = Pb * 1024 -    private fun bytesToSizeUnit(size: Float): String = +    private fun bytesToSizeUnit(size: Float, roundUp: Boolean = false): String =          when {              size < Kb -> {                  context.getString( @@ -39,63 +39,59 @@ object MemoryUtil {              size < Mb -> {                  context.getString(                      R.string.memory_formatted, -                    (size / Kb).hundredths, +                    if (roundUp) ceil(size / Kb) else (size / Kb).hundredths,                      context.getString(R.string.memory_kilobyte)                  )              }              size < Gb -> {                  context.getString(                      R.string.memory_formatted, -                    (size / Mb).hundredths, +                    if (roundUp) ceil(size / Mb) else (size / Mb).hundredths,                      context.getString(R.string.memory_megabyte)                  )              }              size < Tb -> {                  context.getString(                      R.string.memory_formatted, -                    (size / Gb).hundredths, +                    if (roundUp) ceil(size / Gb) else (size / Gb).hundredths,                      context.getString(R.string.memory_gigabyte)                  )              }              size < Pb -> {                  context.getString(                      R.string.memory_formatted, -                    (size / Tb).hundredths, +                    if (roundUp) ceil(size / Tb) else (size / Tb).hundredths,                      context.getString(R.string.memory_terabyte)                  )              }              size < Eb -> {                  context.getString(                      R.string.memory_formatted, -                    (size / Pb).hundredths, +                    if (roundUp) ceil(size / Pb) else (size / Pb).hundredths,                      context.getString(R.string.memory_petabyte)                  )              }              else -> {                  context.getString(                      R.string.memory_formatted, -                    (size / Eb).hundredths, +                    if (roundUp) ceil(size / Eb) else (size / Eb).hundredths,                      context.getString(R.string.memory_exabyte)                  )              }          } -    // Devices are unlikely to have 0.5GB increments of memory so we'll just round up to account for -    // the potential error created by memInfo.totalMem -    private val totalMemory: Float +    val totalMemory: Float          get() {              val memInfo = ActivityManager.MemoryInfo()              with(context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager) {                  getMemoryInfo(memInfo)              } -            return ceil( -                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { -                    memInfo.advertisedMem.toFloat() -                } else { -                    memInfo.totalMem.toFloat() -                } -            ) +            return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { +                memInfo.advertisedMem.toFloat() +            } else { +                memInfo.totalMem.toFloat() +            }          }      fun isLessThan(minimum: Int, size: Float): Boolean = @@ -109,5 +105,7 @@ object MemoryUtil {              else -> totalMemory < Kb && totalMemory < minimum          } -    fun getDeviceRAM(): String = bytesToSizeUnit(totalMemory) +    // Devices are unlikely to have 0.5GB increments of memory so we'll just round up to account for +    // the potential error created by memInfo.totalMem +    fun getDeviceRAM(): String = bytesToSizeUnit(totalMemory, true)  } diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index 294e41045..46438906e 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -247,11 +247,13 @@ void EmulationSession::ConfigureFilesystemProvider(const std::string& filepath)      }  } -void EmulationSession::InitializeSystem() { -    // Initialize logging system -    Common::Log::Initialize(); -    Common::Log::SetColorConsoleBackendEnabled(true); -    Common::Log::Start(); +void EmulationSession::InitializeSystem(bool reload) { +    if (!reload) { +        // Initialize logging system +        Common::Log::Initialize(); +        Common::Log::SetColorConsoleBackendEnabled(true); +        Common::Log::Start(); +    }      // Initialize filesystem.      m_system.SetFilesystem(m_vfs); @@ -667,12 +669,15 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchReleased(JNIEnv* env, jclass c      }  } -void Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeSystem(JNIEnv* env, jclass clazz) { +void Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeSystem(JNIEnv* env, jclass clazz, +                                                            jboolean reload) {      // Create the default config.ini.      Config{};      // Initialize the emulated system. -    EmulationSession::GetInstance().System().Initialize(); -    EmulationSession::GetInstance().InitializeSystem(); +    if (!reload) { +        EmulationSession::GetInstance().System().Initialize(); +    } +    EmulationSession::GetInstance().InitializeSystem(reload);  }  jint Java_org_yuzu_yuzu_1emu_NativeLibrary_defaultCPUCore(JNIEnv* env, jclass clazz) { diff --git a/src/android/app/src/main/jni/native.h b/src/android/app/src/main/jni/native.h index 0aa2b085b..3b9596459 100644 --- a/src/android/app/src/main/jni/native.h +++ b/src/android/app/src/main/jni/native.h @@ -43,7 +43,7 @@ public:      const Core::PerfStatsResults& PerfStats() const;      void ConfigureFilesystemProvider(const std::string& filepath); -    void InitializeSystem(); +    void InitializeSystem(bool reload);      Core::SystemResultStatus InitializeEmulation(const std::string& filepath);      bool IsHandheldOnly(); | 
