mirror of
https://github.com/PCSX2/pcsx2.git
synced 2025-03-04 10:17:25 +00:00

All games use mailbox/triple buffering. Except when you enable sync to host refresh, in which case FIFO/double buffering is used. This means vsync enabled will ever tear, but at the same time, never drop to 30fps on a missed frame due to frame rate differences. To have the "best of both worlds", you should enable vsync and sync to host refresh. Previously, this resulted in additional input lag, since the host vsync would drive the EE frame timing. Now, this behaviour is disabled by default, unless you enable "Use Host VSync Timing".
35 lines
1.2 KiB
C++
35 lines
1.2 KiB
C++
// SPDX-FileCopyrightText: 2002-2023 PCSX2 Dev Team
|
|
// SPDX-License-Identifier: LGPL-3.0+
|
|
|
|
#ifdef __APPLE__
|
|
|
|
#include <string>
|
|
#include <optional>
|
|
|
|
struct WindowInfo;
|
|
|
|
/// Helper functions for things that need Objective-C
|
|
namespace CocoaTools
|
|
{
|
|
bool CreateMetalLayer(WindowInfo* wi);
|
|
void DestroyMetalLayer(WindowInfo* wi);
|
|
std::optional<float> GetViewRefreshRate(const WindowInfo& wi);
|
|
|
|
/// Add a handler to be run when macOS changes between dark and light themes
|
|
void AddThemeChangeHandler(void* ctx, void(handler)(void* ctx));
|
|
/// Remove a handler previously added using AddThemeChangeHandler with the given context
|
|
void RemoveThemeChangeHandler(void* ctx);
|
|
/// Returns the bundle path.
|
|
std::optional<std::string> GetBundlePath();
|
|
/// Get the bundle path to the actual application without any translocation fun
|
|
std::optional<std::string> GetNonTranslocatedBundlePath();
|
|
/// Move the given file to the trash, and return the path to its new location
|
|
std::optional<std::string> MoveToTrash(std::string_view file);
|
|
/// Launch the given application once this one quits
|
|
bool DelayedLaunch(std::string_view file);
|
|
/// Open a Finder window to the given URL
|
|
bool ShowInFinder(std::string_view file);
|
|
}
|
|
|
|
#endif // __APPLE__
|