Removed primary-screen checks so the input overlay always forwards touch events, ensuring all touches reach the native handler even when multiple displays are active
This commit is contained in:
parent
5b65763479
commit
b0be21beaf
3 changed files with 6 additions and 9 deletions
|
|
@ -104,10 +104,7 @@ class SecondaryDisplayPresentation(
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
val sendToSecondary = DisplayHelper.isBottomOnSecondary()
|
|
||||||
|
|
||||||
this.surfaceView.setOnTouchListener { _, event ->
|
this.surfaceView.setOnTouchListener { _, event ->
|
||||||
if (!sendToSecondary) return@setOnTouchListener true
|
|
||||||
|
|
||||||
val pointerIndex = event.actionIndex
|
val pointerIndex = event.actionIndex
|
||||||
val pointerId = event.getPointerId(pointerIndex)
|
val pointerId = event.getPointerId(pointerIndex)
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@ import androidx.preference.PreferenceManager
|
||||||
import org.citra.citra_emu.CitraApplication
|
import org.citra.citra_emu.CitraApplication
|
||||||
import org.citra.citra_emu.NativeLibrary
|
import org.citra.citra_emu.NativeLibrary
|
||||||
import org.citra.citra_emu.R
|
import org.citra.citra_emu.R
|
||||||
import org.citra.citra_emu.display.DisplayHelper
|
|
||||||
import org.citra.citra_emu.utils.EmulationMenuSettings
|
import org.citra.citra_emu.utils.EmulationMenuSettings
|
||||||
import org.citra.citra_emu.utils.TurboHelper
|
import org.citra.citra_emu.utils.TurboHelper
|
||||||
import java.lang.NullPointerException
|
import java.lang.NullPointerException
|
||||||
|
|
@ -105,8 +104,6 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
||||||
val isActionUp =
|
val isActionUp =
|
||||||
motionEvent == MotionEvent.ACTION_UP || motionEvent == MotionEvent.ACTION_POINTER_UP
|
motionEvent == MotionEvent.ACTION_UP || motionEvent == MotionEvent.ACTION_POINTER_UP
|
||||||
|
|
||||||
val isTouchScreenHere = DisplayHelper.isBottomOnPrimary()
|
|
||||||
|
|
||||||
val pointerList = (0 until event.pointerCount).toMutableList()
|
val pointerList = (0 until event.pointerCount).toMutableList()
|
||||||
// Move the pointer that triggered the most recent event to the front
|
// Move the pointer that triggered the most recent event to the front
|
||||||
// of the list so that it is processed first
|
// of the list so that it is processed first
|
||||||
|
|
@ -152,7 +149,7 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
||||||
|
|
||||||
val hasActiveOverlay = hasActiveButtons || hasActiveDpad || hasActiveJoystick
|
val hasActiveOverlay = hasActiveButtons || hasActiveDpad || hasActiveJoystick
|
||||||
|
|
||||||
if (preferences.getBoolean("isTouchEnabled", true) && !hasActiveOverlay && isTouchScreenHere) {
|
if (preferences.getBoolean("isTouchEnabled", true) && !hasActiveOverlay) {
|
||||||
if (isActionMove) {
|
if (isActionMove) {
|
||||||
NativeLibrary.onTouchMoved(xPosition.toFloat(), yPosition.toFloat())
|
NativeLibrary.onTouchMoved(xPosition.toFloat(), yPosition.toFloat())
|
||||||
continue
|
continue
|
||||||
|
|
@ -254,8 +251,7 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
||||||
|
|
||||||
if (preferences.getBoolean("isTouchEnabled", true) &&
|
if (preferences.getBoolean("isTouchEnabled", true) &&
|
||||||
isActionDown &&
|
isActionDown &&
|
||||||
!anyOverlayStateChanged &&
|
!anyOverlayStateChanged
|
||||||
isTouchScreenHere
|
|
||||||
) {
|
) {
|
||||||
// These need to be recalculated because touching the area
|
// These need to be recalculated because touching the area
|
||||||
// right in the middle of the dpad (between the "buttons") or
|
// right in the middle of the dpad (between the "buttons") or
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,10 @@ bool EmuWindow::IsWithinTouchscreen(const Layout::FramebufferLayout& layout, uns
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!layout.bottom_screen_enabled) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
Settings::StereoRenderOption render_3d_mode = Settings::values.render_3d.GetValue();
|
Settings::StereoRenderOption render_3d_mode = Settings::values.render_3d.GetValue();
|
||||||
|
|
||||||
if (render_3d_mode == Settings::StereoRenderOption::SideBySide ||
|
if (render_3d_mode == Settings::StereoRenderOption::SideBySide ||
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue