]> gitweb.factorcode.org Git - factor.git/commitdiff
ui.backend.windows: Don't throw an error on timeout for wglMakeCurrent.
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 15 Dec 2021 09:40:31 +0000 (03:40 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 15 Dec 2021 09:40:31 +0000 (03:40 -0600)
Fixes #2173.

basis/ui/backend/windows/windows.factor
basis/windows/errors/errors.factor

index 90da2b30d426632f0f1323861578585fee98b95a..d7804519ba30c83597f306ea866ec986f33d9bdc 100644 (file)
@@ -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
index 5edba766fce4c9dfe21ce2c674f1e5059bb0b377..feb933f2b1f4505f5f1158e869f6a57665a00fc6 100644 (file)
@@ -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? [