From 28e2759412cacb017f2fdc4a6fb908f53ccfe5ba Mon Sep 17 00:00:00 2001 From: yellows8 Date: Fri, 29 Dec 2017 18:44:09 -0500 Subject: [PATCH] Fixed vsync handling. --- nx/source/gfx/gfx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nx/source/gfx/gfx.c b/nx/source/gfx/gfx.c index da4a4638..9f8a5e7b 100644 --- a/nx/source/gfx/gfx.c +++ b/nx/source/gfx/gfx.c @@ -451,6 +451,8 @@ static void _waitevent(Handle *handle) { s32 tmpindex=0; Result rc=0, rc2=0; + svcResetSignal(*handle); + do { rc = svcWaitSynchronization(&tmpindex, handle, 1, U64_MAX); if (R_SUCCEEDED(rc)) rc2 = svcResetSignal(*handle); @@ -461,7 +463,6 @@ static void _waitevent(Handle *handle) { void gfxWaitForVsync() { _waitevent(&g_gfxDisplayVsyncEvent); - _waitevent(&g_gfxDisplayVsyncEvent);//The display refresh-rate is supposed to be 60Hz. So why is it only refreshed at 30Hz?(Hardware register(s) are updated by the time _gfxDequeueBuffer() finishes, but not yet used by the display at that time) } void gfxSwapBuffers() {