From 74cabd0ff01ee631e8b7b37aba037ff9b778be40 Mon Sep 17 00:00:00 2001 From: Abandoned Cart Date: Fri, 2 Jun 2023 20:07:27 -0400 Subject: [PATCH] android: Rebuild PiP parameters on change --- .../yuzu_emu/activities/EmulationActivity.kt | 27 ++++++++----------- .../yuzu_emu/fragments/EmulationFragment.kt | 3 +++ .../src/main/res/drawable/ic_pip_pause.xml | 9 +++++++ .../app/src/main/res/drawable/ic_pip_play.xml | 9 +++++++ 4 files changed, 32 insertions(+), 16 deletions(-) create mode 100644 src/android/app/src/main/res/drawable/ic_pip_pause.xml create mode 100644 src/android/app/src/main/res/drawable/ic_pip_play.xml 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 2f2b03a7d2..9713016822 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 @@ -100,6 +100,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { // Set these options now so that the SurfaceView the game renders into is the right size. enableFullscreenImmersive() + pictureInPictureParamsBuilder = getPictureInPictureActionsBuilder() + setContentView(R.layout.activity_emulation) window.decorView.setBackgroundColor(getColor(android.R.color.black)) @@ -166,8 +168,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { getAdjustedRotation() ) - if (BooleanSetting.PICTURE_IN_PICTURE.boolean) { - pictureInPictureParamsBuilder = getPictureInPictureBuilder() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + pictureInPictureParamsBuilder.setAutoEnterEnabled(BooleanSetting.PICTURE_IN_PICTURE.boolean) setPictureInPictureParams(pictureInPictureParamsBuilder.build()) } } @@ -314,30 +316,23 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { } } - private fun getPictureInPictureBuilder() : PictureInPictureParams.Builder { - val pictureInPictureParamsBuilder = PictureInPictureParams.Builder() - + private fun getPictureInPictureActionsBuilder() : PictureInPictureParams.Builder { val pictureInPictureActions : MutableList = mutableListOf() val pendingFlags = PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE - val pauseIcon = Icon.createWithResource(this, R.drawable.ic_pause) - val pausePendingIntent = PendingIntent.getBroadcast(this, R.drawable.ic_pause, Intent(actionPause), pendingFlags) + val pauseIcon = Icon.createWithResource(this, R.drawable.ic_pip_pause) + val pausePendingIntent = PendingIntent.getBroadcast(this, R.drawable.ic_pip_pause, Intent(actionPause), pendingFlags) val pauseRemoteAction = RemoteAction(pauseIcon, getString(R.string.pause), getString(R.string.pause), pausePendingIntent) pictureInPictureActions.add(pauseRemoteAction) - val playIcon = Icon.createWithResource(this, R.drawable.ic_play) - val playPendingIntent = PendingIntent.getBroadcast(this, R.drawable.ic_play, Intent(actionPlay), pendingFlags) + val playIcon = Icon.createWithResource(this, R.drawable.ic_pip_play) + val playPendingIntent = PendingIntent.getBroadcast(this, R.drawable.ic_pip_play, Intent(actionPlay), pendingFlags) val playRemoteAction = RemoteAction(playIcon, getString(R.string.play), getString(R.string.play), playPendingIntent) pictureInPictureActions.add(playRemoteAction) - pictureInPictureParamsBuilder.setActions(pictureInPictureActions) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - pictureInPictureParamsBuilder.setAutoEnterEnabled(true) + return PictureInPictureParams.Builder().apply { + setActions(pictureInPictureActions) } - - setPictureInPictureParams(pictureInPictureParamsBuilder.build()) - - return pictureInPictureParamsBuilder } private var pictureInPictureReceiver = object : BroadcastReceiver() { 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 91e16e531f..3f1e4a3349 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 @@ -180,6 +180,9 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } fun onPictureInPictureEnter() { + if (binding.drawerLayout.isOpen) { + binding.drawerLayout.close() + } if (EmulationMenuSettings.showOverlay) { binding.surfaceInputOverlay.post { binding.surfaceInputOverlay.isVisible = false } } diff --git a/src/android/app/src/main/res/drawable/ic_pip_pause.xml b/src/android/app/src/main/res/drawable/ic_pip_pause.xml new file mode 100644 index 0000000000..4a7d4ea03d --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_pip_pause.xml @@ -0,0 +1,9 @@ + + + diff --git a/src/android/app/src/main/res/drawable/ic_pip_play.xml b/src/android/app/src/main/res/drawable/ic_pip_play.xml new file mode 100644 index 0000000000..2303a4623f --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_pip_play.xml @@ -0,0 +1,9 @@ + + +