diff options
3 files changed, 63 insertions, 63 deletions
| 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 c0332a447..5e37db46f 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 @@ -53,6 +53,7 @@ import org.yuzu.yuzu_emu.features.settings.model.IntSetting  import org.yuzu.yuzu_emu.features.settings.model.Settings  import org.yuzu.yuzu_emu.features.settings.ui.SettingsActivity  import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile +import org.yuzu.yuzu_emu.overlay.InputOverlay  import org.yuzu.yuzu_emu.utils.*  class EmulationFragment : Fragment(), SurfaceHolder.Callback { @@ -66,6 +67,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {      val args by navArgs<EmulationFragmentArgs>() +    private var isInFoldableLayout = false +      private lateinit var onReturnFromSettings: ActivityResultLauncher<Intent>      override fun onAttach(context: Context) { @@ -195,6 +198,13 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {      override fun onConfigurationChanged(newConfig: Configuration) {          super.onConfigurationChanged(newConfig) +        if (!isInFoldableLayout) { +            if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { +                binding.surfaceInputOverlay.setOrientation(InputOverlay.PORTRAIT) +            } else { +                binding.surfaceInputOverlay.setOrientation(InputOverlay.LANDSCAPE) +            } +        }          if (!binding.surfaceInputOverlay.isInEditMode) refreshInputOverlay()      } @@ -215,6 +225,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {              }          ) +        updateScreenLayout() +          emulationState.run(emulationActivity!!.isActivityRecreated)      } @@ -321,6 +333,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {                  else -> { it.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE }              }          } +        onConfigurationChanged(resources.configuration)      }      private val Number.toPx get() = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, this.toFloat(), Resources.getSystem().displayMetrics).toInt() @@ -332,10 +345,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {                  if (it.orientation == FoldingFeature.Orientation.HORIZONTAL) {                      binding.emulationContainer.layoutParams.height = it.bounds.top                      // Prevent touch regions from being displayed in the hinge -                    binding.surfaceInputOverlay.isInFoldableLayout = true                      binding.overlayContainer.layoutParams.height = it.bounds.bottom - 48.toPx                      binding.overlayContainer.updatePadding(0, 0, 0, 24.toPx)                      binding.inGameMenu.layoutParams.height = it.bounds.bottom +                    isInFoldableLayout = true +                    binding.surfaceInputOverlay.setOrientation(InputOverlay.FOLDABLE)                      refreshInputOverlay()                  }              } @@ -345,8 +359,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {              binding.emulationContainer.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT              binding.overlayContainer.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT              binding.overlayContainer.updatePadding(0, 0, 0, 0) -            binding.surfaceInputOverlay.isInFoldableLayout = false              binding.inGameMenu.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT +            isInFoldableLayout = false              updateScreenLayout()          }          binding.emulationContainer.requestLayout() diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt index f6b29865e..9b3054f0b 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt @@ -668,8 +668,8 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : SurfaceView(context      private fun getResourceValue(descriptor: String, position: Int) : Float {          return when (descriptor) { -            portrait -> resources.getInteger(portraitResources[position]).toFloat() / 1000 -            foldable -> resources.getInteger(foldableResources[position]).toFloat() / 1000 +            PORTRAIT -> resources.getInteger(portraitResources[position]).toFloat() / 1000 +            FOLDABLE -> resources.getInteger(foldableResources[position]).toFloat() / 1000              else -> resources.getInteger(landscapeResources[position]).toFloat() / 1000          }      } @@ -804,32 +804,18 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : SurfaceView(context          return inEditMode      } -    override fun onConfigurationChanged(newConfig: Configuration?) { -        super.onConfigurationChanged(newConfig) -        if (!isInFoldableLayout) { -            orientation = if (newConfig?.orientation == Configuration.ORIENTATION_PORTRAIT) -                portrait -            else -                "" -        } +    fun setOrientation(descriptor: String) { +        orientation = descriptor      } -    var isInFoldableLayout : Boolean = false -        set(value) { -            if (value) -                orientation = foldable -            else -                onConfigurationChanged(resources.configuration) -            field = value -        } -      companion object {          private val preferences: SharedPreferences =              PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) -        private const val portrait = "-Portrait" -        private const val foldable = "-Foldable" -        private var orientation = "" +        const val LANDSCAPE = "" +        const val PORTRAIT = "-Portrait" +        const val FOLDABLE = "-Foldable" +        private var orientation = LANDSCAPE          /**           * Resizes a [Bitmap] by a given scale factor diff --git a/src/android/app/src/main/res/values/integers.xml b/src/android/app/src/main/res/values/integers.xml index 07ddf3470..04280fae2 100644 --- a/src/android/app/src/main/res/values/integers.xml +++ b/src/android/app/src/main/res/values/integers.xml @@ -2,38 +2,6 @@  <resources>      <integer name="game_title_lines">2</integer> -    <!-- Default SWITCH portrait layout --> -    <integer name="SWITCH_BUTTON_A_PORTRAIT_X">840</integer> -    <integer name="SWITCH_BUTTON_A_PORTRAIT_Y">820</integer> -    <integer name="SWITCH_BUTTON_B_PORTRAIT_X">740</integer> -    <integer name="SWITCH_BUTTON_B_PORTRAIT_Y">860</integer> -    <integer name="SWITCH_BUTTON_X_PORTRAIT_X">740</integer> -    <integer name="SWITCH_BUTTON_X_PORTRAIT_Y">780</integer> -    <integer name="SWITCH_BUTTON_Y_PORTRAIT_X">640</integer> -    <integer name="SWITCH_BUTTON_Y_PORTRAIT_Y">820</integer> -    <integer name="SWITCH_STICK_L_PORTRAIT_X">180</integer> -    <integer name="SWITCH_STICK_L_PORTRAIT_Y">640</integer> -    <integer name="SWITCH_STICK_R_PORTRAIT_X">820</integer> -    <integer name="SWITCH_STICK_R_PORTRAIT_Y">640</integer> -    <integer name="SWITCH_TRIGGER_L_PORTRAIT_X">140</integer> -    <integer name="SWITCH_TRIGGER_L_PORTRAIT_Y">240</integer> -    <integer name="SWITCH_TRIGGER_R_PORTRAIT_X">860</integer> -    <integer name="SWITCH_TRIGGER_R_PORTRAIT_Y">240</integer> -    <integer name="SWITCH_TRIGGER_ZL_PORTRAIT_X">140</integer> -    <integer name="SWITCH_TRIGGER_ZL_PORTRAIT_Y">180</integer> -    <integer name="SWITCH_TRIGGER_ZR_PORTRAIT_X">860</integer> -    <integer name="SWITCH_TRIGGER_ZR_PORTRAIT_Y">180</integer> -    <integer name="SWITCH_BUTTON_MINUS_PORTRAIT_X">440</integer> -    <integer name="SWITCH_BUTTON_MINUS_PORTRAIT_Y">950</integer> -    <integer name="SWITCH_BUTTON_PLUS_PORTRAIT_X">560</integer> -    <integer name="SWITCH_BUTTON_PLUS_PORTRAIT_Y">950</integer> -    <integer name="SWITCH_BUTTON_HOME_PORTRAIT_X">600</integer> -    <integer name="SWITCH_BUTTON_HOME_PORTRAIT_Y">950</integer> -    <integer name="SWITCH_BUTTON_CAPTURE_PORTRAIT_X">400</integer> -    <integer name="SWITCH_BUTTON_CAPTURE_PORTRAIT_Y">950</integer> -    <integer name="SWITCH_BUTTON_DPAD_PORTRAIT_X">240</integer> -    <integer name="SWITCH_BUTTON_DPAD_PORTRAIT_Y">820</integer> -      <!-- Default SWITCH landscape layout -->      <integer name="SWITCH_BUTTON_A_X">760</integer>      <integer name="SWITCH_BUTTON_A_Y">790</integer> @@ -66,16 +34,48 @@      <integer name="SWITCH_BUTTON_DPAD_X">260</integer>      <integer name="SWITCH_BUTTON_DPAD_Y">790</integer> +    <!-- Default SWITCH portrait layout --> +    <integer name="SWITCH_BUTTON_A_PORTRAIT_X">840</integer> +    <integer name="SWITCH_BUTTON_A_PORTRAIT_Y">820</integer> +    <integer name="SWITCH_BUTTON_B_PORTRAIT_X">740</integer> +    <integer name="SWITCH_BUTTON_B_PORTRAIT_Y">860</integer> +    <integer name="SWITCH_BUTTON_X_PORTRAIT_X">740</integer> +    <integer name="SWITCH_BUTTON_X_PORTRAIT_Y">780</integer> +    <integer name="SWITCH_BUTTON_Y_PORTRAIT_X">640</integer> +    <integer name="SWITCH_BUTTON_Y_PORTRAIT_Y">820</integer> +    <integer name="SWITCH_STICK_L_PORTRAIT_X">180</integer> +    <integer name="SWITCH_STICK_L_PORTRAIT_Y">640</integer> +    <integer name="SWITCH_STICK_R_PORTRAIT_X">820</integer> +    <integer name="SWITCH_STICK_R_PORTRAIT_Y">640</integer> +    <integer name="SWITCH_TRIGGER_L_PORTRAIT_X">140</integer> +    <integer name="SWITCH_TRIGGER_L_PORTRAIT_Y">240</integer> +    <integer name="SWITCH_TRIGGER_R_PORTRAIT_X">860</integer> +    <integer name="SWITCH_TRIGGER_R_PORTRAIT_Y">240</integer> +    <integer name="SWITCH_TRIGGER_ZL_PORTRAIT_X">140</integer> +    <integer name="SWITCH_TRIGGER_ZL_PORTRAIT_Y">180</integer> +    <integer name="SWITCH_TRIGGER_ZR_PORTRAIT_X">860</integer> +    <integer name="SWITCH_TRIGGER_ZR_PORTRAIT_Y">180</integer> +    <integer name="SWITCH_BUTTON_MINUS_PORTRAIT_X">440</integer> +    <integer name="SWITCH_BUTTON_MINUS_PORTRAIT_Y">950</integer> +    <integer name="SWITCH_BUTTON_PLUS_PORTRAIT_X">560</integer> +    <integer name="SWITCH_BUTTON_PLUS_PORTRAIT_Y">950</integer> +    <integer name="SWITCH_BUTTON_HOME_PORTRAIT_X">600</integer> +    <integer name="SWITCH_BUTTON_HOME_PORTRAIT_Y">950</integer> +    <integer name="SWITCH_BUTTON_CAPTURE_PORTRAIT_X">400</integer> +    <integer name="SWITCH_BUTTON_CAPTURE_PORTRAIT_Y">950</integer> +    <integer name="SWITCH_BUTTON_DPAD_PORTRAIT_X">240</integer> +    <integer name="SWITCH_BUTTON_DPAD_PORTRAIT_Y">820</integer> +      <!-- Default SWITCH foldable layout --> -    <integer name="SWITCH_BUTTON_A_FOLDABLE_X">830</integer> +    <integer name="SWITCH_BUTTON_A_FOLDABLE_X">840</integer>      <integer name="SWITCH_BUTTON_A_FOLDABLE_Y">420</integer> -    <integer name="SWITCH_BUTTON_B_FOLDABLE_X">730</integer> -    <integer name="SWITCH_BUTTON_B_FOLDABLE_Y">470</integer> -    <integer name="SWITCH_BUTTON_X_FOLDABLE_X">730</integer> -    <integer name="SWITCH_BUTTON_X_FOLDABLE_Y">370</integer> -    <integer name="SWITCH_BUTTON_Y_FOLDABLE_X">630</integer> +    <integer name="SWITCH_BUTTON_B_FOLDABLE_X">740</integer> +    <integer name="SWITCH_BUTTON_B_FOLDABLE_Y">460</integer> +    <integer name="SWITCH_BUTTON_X_FOLDABLE_X">740</integer> +    <integer name="SWITCH_BUTTON_X_FOLDABLE_Y">380</integer> +    <integer name="SWITCH_BUTTON_Y_FOLDABLE_X">640</integer>      <integer name="SWITCH_BUTTON_Y_FOLDABLE_Y">420</integer> -    <integer name="SWITCH_STICK_L_FOLDABLE_X">170</integer> +    <integer name="SWITCH_STICK_L_FOLDABLE_X">180</integer>      <integer name="SWITCH_STICK_L_FOLDABLE_Y">240</integer>      <integer name="SWITCH_STICK_R_FOLDABLE_X">820</integer>      <integer name="SWITCH_STICK_R_FOLDABLE_Y">240</integer> | 
