diff --git a/android/app/src/main/cpp/xemu_android.cpp b/android/app/src/main/cpp/xemu_android.cpp index d83e8bbe02..055e89b10b 100644 --- a/android/app/src/main/cpp/xemu_android.cpp +++ b/android/app/src/main/cpp/xemu_android.cpp @@ -717,7 +717,7 @@ struct EmulatorSettings { int frame_rate_limit = 60; // 30 or 60 int system_memory_mib = 64; // 64 or 128 std::string tcg_thread = "multi"; // "single" or "multi" - std::string renderer = "vulkan"; // "vulkan" or "opengl" + std::string renderer = "opengl"; // "vulkan" or "opengl" std::string filtering = "linear"; // "linear" or "nearest" bool use_dsp = false; bool hrtf = true; diff --git a/android/app/src/main/cpp/xemu_settings_android.cc b/android/app/src/main/cpp/xemu_settings_android.cc index b242f46561..6a0eae164d 100644 --- a/android/app/src/main/cpp/xemu_settings_android.cc +++ b/android/app/src/main/cpp/xemu_settings_android.cc @@ -67,7 +67,7 @@ static void xemu_settings_apply_defaults(void) g_config.input.keyboard_controller_scancode_map.rstick_down = 14; g_config.input.keyboard_controller_scancode_map.rtrigger = 18; - g_config.display.renderer = CONFIG_DISPLAY_RENDERER_VULKAN; + g_config.display.renderer = CONFIG_DISPLAY_RENDERER_OPENGL; g_config.display.filtering = CONFIG_DISPLAY_FILTERING_LINEAR; g_config.display.quality.surface_scale = 1; g_config.display.window.fullscreen_on_startup = false; diff --git a/android/app/src/main/java/com/izzy2lost/x1box/EdgeToEdgeHelper.kt b/android/app/src/main/java/com/izzy2lost/x1box/EdgeToEdgeHelper.kt new file mode 100644 index 0000000000..294c74e7b9 --- /dev/null +++ b/android/app/src/main/java/com/izzy2lost/x1box/EdgeToEdgeHelper.kt @@ -0,0 +1,34 @@ +package com.izzy2lost.x1box + +import android.app.Activity +import android.view.View +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat + +internal object EdgeToEdgeHelper { + fun enable(activity: Activity) { + WindowCompat.setDecorFitsSystemWindows(activity.window, false) + } + + fun applySystemBarPadding(view: View) { + val initialLeft = view.paddingLeft + val initialTop = view.paddingTop + val initialRight = view.paddingRight + val initialBottom = view.paddingBottom + + ViewCompat.setOnApplyWindowInsetsListener(view) { target, insets -> + val bars = insets.getInsets( + WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout() + ) + target.setPadding( + initialLeft + bars.left, + initialTop + bars.top, + initialRight + bars.right, + initialBottom + bars.bottom + ) + insets + } + ViewCompat.requestApplyInsets(view) + } +} diff --git a/android/app/src/main/java/com/izzy2lost/x1box/GameLibraryActivity.kt b/android/app/src/main/java/com/izzy2lost/x1box/GameLibraryActivity.kt index 287204e7c0..62767d1742 100644 --- a/android/app/src/main/java/com/izzy2lost/x1box/GameLibraryActivity.kt +++ b/android/app/src/main/java/com/izzy2lost/x1box/GameLibraryActivity.kt @@ -125,6 +125,8 @@ class GameLibraryActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_game_library) + EdgeToEdgeHelper.enable(this) + EdgeToEdgeHelper.applySystemBarPadding(findViewById(R.id.library_scroll)) if (tryRestartLastGameFromIntent()) { return diff --git a/android/app/src/main/java/com/izzy2lost/x1box/MainActivity.kt b/android/app/src/main/java/com/izzy2lost/x1box/MainActivity.kt index 9b99e8bfcd..16e9b43332 100644 --- a/android/app/src/main/java/com/izzy2lost/x1box/MainActivity.kt +++ b/android/app/src/main/java/com/izzy2lost/x1box/MainActivity.kt @@ -17,11 +17,13 @@ import android.widget.BaseAdapter import android.widget.FrameLayout import android.widget.ImageView import android.widget.ListView +import android.widget.RelativeLayout import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AlertDialog import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.libsdl.app.SDLActivity +import org.libsdl.app.SDLSurface import java.io.File import java.nio.ByteBuffer import java.nio.ByteOrder @@ -52,6 +54,15 @@ class MainActivity : SDLActivity(), InputManager.InputDeviceListener { private var startupSnapshotSlot: Int? = null private var startupSnapshotLoadScheduled = false + override fun createSDLSurface(context: Context): SDLSurface { + return super.createSDLSurface(context).apply { + layoutParams = RelativeLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ) + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val requestedSlot = intent?.getIntExtra(EXTRA_AUTO_LOAD_SNAPSHOT_SLOT, 0) ?: 0 diff --git a/android/app/src/main/java/com/izzy2lost/x1box/SettingsActivity.kt b/android/app/src/main/java/com/izzy2lost/x1box/SettingsActivity.kt index c51eaa8669..d6ab784179 100644 --- a/android/app/src/main/java/com/izzy2lost/x1box/SettingsActivity.kt +++ b/android/app/src/main/java/com/izzy2lost/x1box/SettingsActivity.kt @@ -78,6 +78,8 @@ class SettingsActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_settings) + EdgeToEdgeHelper.enable(this) + EdgeToEdgeHelper.applySystemBarPadding(findViewById(R.id.settings_scroll)) val toggleGraphicsApi = findViewById(R.id.toggle_graphics_api) val toggleFiltering = findViewById(R.id.toggle_filtering) @@ -109,7 +111,7 @@ class SettingsActivity : AppCompatActivity() { dropdownEepromVideoStandard = findViewById(R.id.dropdown_eeprom_video_standard) // Load current values - val renderer = prefs.getString("setting_renderer", "vulkan") ?: "vulkan" + val renderer = prefs.getString("setting_renderer", "opengl") ?: "opengl" if (renderer == "opengl") { toggleGraphicsApi.check(R.id.btn_renderer_opengl) } else { diff --git a/android/app/src/main/java/com/izzy2lost/x1box/SetupWizardActivity.kt b/android/app/src/main/java/com/izzy2lost/x1box/SetupWizardActivity.kt index 2ca45ae5b6..3d03b17277 100644 --- a/android/app/src/main/java/com/izzy2lost/x1box/SetupWizardActivity.kt +++ b/android/app/src/main/java/com/izzy2lost/x1box/SetupWizardActivity.kt @@ -149,6 +149,8 @@ class SetupWizardActivity : AppCompatActivity() { } setContentView(R.layout.activity_setup_wizard) + EdgeToEdgeHelper.enable(this) + EdgeToEdgeHelper.applySystemBarPadding(findViewById(R.id.setup_scroll)) val setupRoot: View = findViewById(R.id.setup_root) val setupCard: View = findViewById(R.id.setup_card) diff --git a/android/app/src/main/res/layout/activity_game_library.xml b/android/app/src/main/res/layout/activity_game_library.xml index 56fa1ef4c8..96d076cb72 100644 --- a/android/app/src/main/res/layout/activity_game_library.xml +++ b/android/app/src/main/res/layout/activity_game_library.xml @@ -3,8 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@drawable/setup_wizard_background" - android:fitsSystemWindows="true"> + android:background="@drawable/setup_wizard_background"> + android:background="@drawable/setup_wizard_background"> + android:background="@drawable/setup_wizard_background"> real_window, surface_width(scon->surface), surface_height(scon->surface)); +#endif } static void sdl2_redraw(struct sdl2_console *scon)