From 478e2a29913d78c14fc409d7446b15b8da606961 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 15 Dec 2021 03:40:31 -0600 Subject: [PATCH] ui.backend.windows: Don't throw an error on timeout for wglMakeCurrent. Fixes #2173. --- basis/ui/backend/windows/windows.factor | 4 +++- basis/windows/errors/errors.factor | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/basis/ui/backend/windows/windows.factor b/basis/ui/backend/windows/windows.factor index 90da2b30d4..d7804519ba 100644 --- a/basis/ui/backend/windows/windows.factor +++ b/basis/ui/backend/windows/windows.factor @@ -701,8 +701,10 @@ M: windows-ui-backend (open-window) [ dup handle>> hWnd>> register-window ] [ handle>> hWnd>> show-window ] tri ; +! https://github.com/factor/factor/issues/2173 +! ignore timeout (error 258) M: win-base select-gl-context - [ hDC>> ] [ hRC>> ] bi wglMakeCurrent win32-error=0/f + [ hDC>> ] [ hRC>> ] bi wglMakeCurrent win32-error=0/f-ignore-timeout GdiFlush drop ; M: win-base flush-gl-context diff --git a/basis/windows/errors/errors.factor b/basis/windows/errors/errors.factor index 5edba766fc..feb933f2b1 100644 --- a/basis/windows/errors/errors.factor +++ b/basis/windows/errors/errors.factor @@ -726,12 +726,18 @@ ERROR: windows-error n string ; : n>win32-error-check ( n -- ) [ throw-windows-error ] unless-zero ; +: win32-error-ignore-timeout ( -- ) + GetLastError + dup 258 = [ drop ] [ throw-windows-error ] if ; + ! Note that win32-error* words throw GetLastError code. : win32-error ( -- ) GetLastError n>win32-error-check ; : win32-error=0/f ( n -- ) { 0 f } member? [ win32-error ] when ; : win32-error>0 ( n -- ) 0 > [ win32-error ] when ; : win32-error<0 ( n -- ) 0 < [ win32-error ] when ; : win32-error<>0 ( n -- ) zero? [ win32-error ] unless ; +: win32-error=0/f-ignore-timeout ( n -- ) + { 0 f } member? [ win32-error-ignore-timeout ] when ; : win32-allow-errors ( n allowed -- n ) GetLastError 2dup swap member? [ -- 2.34.1