Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rsx/overlays: Unified overlay input #13398

Merged
merged 14 commits into from
Feb 23, 2023
Merged

Conversation

kd-11
Copy link
Contributor

@kd-11 kd-11 commented Feb 13, 2023

Instead of having each async dialog spawning its own thread, let's just have the manager handle this. Interfaces are pushed onto a LIFO stack which also inserts some Z-ordering. Multiple open dialogs do not fight for input, the last active dialog retains the input target until it releases it.
The current implementation here is far from complete. As there is no input pre-emption, the currently opened dialog must finish inputs before handing over to the next one. This actually works out ok for what we need, but can be improved upon.

TODOs:

  • Input queue pre-emption. New dialogs should pause open ones and take input for themselves.
    • Input loop is re-entrant.
    • Pad intercept state should be a function of the unified handler. Nothing needs this right now.
  • Explicit Z-pinning (e.g top-most or bottom-most pin) This requires a different stack implementation. Maybe later.

Copy link
Contributor

@Megamouse Megamouse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just a quick glance. I'll review more later or tomorrow

rpcs3/Emu/RSX/Overlays/overlay_osk.cpp Show resolved Hide resolved
rpcs3/Emu/RSX/VK/VKGSRender.cpp Outdated Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants