| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
| |
This is only a 2-tuple, so it can be converted over to the std::pair
class.
|
|
|
|
| |
This is more concise and consistent with the rest of the codebase.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
EmuWindow::PollEvents was called from the GPU thread (or the CPU thread
in sync-GPU mode) when swapping buffers. It had three implementations:
- In GRenderWindow, it didn't actually poll events, just set a flag and
emit a signal to indicate that a frame was displayed.
- In EmuWindow_SDL2_Hide, it did nothing.
- In EmuWindow_SDL2, it did call SDL_PollEvents, but this is wrong
because SDL_PollEvents is supposed to be called on the thread that set
up video - in this case, the main thread, which was sleeping in a
busyloop (regardless of whether sync-GPU was enabled). On macOS this
causes a crash.
To fix this:
- Rename EmuWindow::PollEvents to OnFrameDisplayed, and give it a
default implementation that does nothing.
- In EmuWindow_SDL2, do not override OnFrameDisplayed, but instead have
the main thread call SDL_WaitEvent in a loop.
|
|
|
|
|
| |
Ensures that callers make use of the constructor, preventing bugs from
silently occurring.
|
|
|
|
| |
Create Vulkan instances and surfaces from the Vulkan backend.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Changes the GraphicsContext to be managed by the GPU core. This
eliminates the need for the frontends to fool around with tricky
MakeCurrent/DoneCurrent calls that are dependent on the settings (such
as async gpu option).
This also refactors out the need to use QWidget::fromWindowContainer as
that caused issues with focus and input handling. Now we use a regular
QWidget and just access the native windowHandle() directly.
Another change is removing the debug tool setting in FrameMailbox.
Instead of trying to block the frontend until a new frame is ready, the
core will now take over presentation and draw directly to the window if
the renderer detects that its hooked by NSight or RenderDoc
Lastly, since it was in the way, I removed ScopeAcquireWindowContext and
replaced it with a simple subclass in GraphicsContext that achieves the
same result
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Adds a Qt and SDL2 frontend for Vulkan. It also finishes the missing
bits on Vulkan initialization.
|
|
|
|
|
| |
There's no performance improvement in passing an unsigned pair by
reference.
|
|
|
|
|
| |
This class is used in a polymorphic context, so destruction of the
context will lead to undefined behavior if the destructor isn't virtual.
|
|\
| |
| | |
Frontend: Migrate to QOpenGLWindow and support shared contexts
|
| | |
|
|/
|
|
|
| |
This member function doesn't modify instance state, so it can have the
const specifier applied to it.
|
|
|
|
|
| |
Previously we weren't always initializing all members of the struct.
Prevents potentially wonky behavior from occurring.
|
|
|
|
| |
Gets the class out of the global namespace.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This removes a dependency inversion between core and common. It's also
the proper place for the file since it makes screen layout decisions
specific to the 3DS.
|
|
|
|
|
|
|
| |
1. removed zl, zr and c-stick from HID::PadState. They are handled by IR, not HID
2. removed button handling in EmuWindow
3. removed key_map
4. cleanup #include
|
| |
|
| |
|
| |
|
|
* Removes circular dependences (common should not depend on core)
|