]> gitweb.factorcode.org Git - factor.git/commitdiff
snake-game.ui: load game textures in graft, dispose in ungraft.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 19 Jan 2018 23:11:41 +0000 (15:11 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 19 Jan 2018 23:11:41 +0000 (15:11 -0800)
Use find-gl-context to fix dispose bug that was corrupting UI on macOS.

extra/snake-game/ui/ui.factor

index e610370c11791a7ac0a2b88571522349095bc472..fe06ee82cd08d3ec3a81b15187d58702429e4880 100644 (file)
@@ -95,14 +95,14 @@ CONSTANT: snake-game-cell-size 20
 : toggle-game-pause ( snake-gadget -- )
     snake-game>> [ not ] change-paused? drop ;
 
-: load-game-textures ( snake-gadget -- textures )
-    dup textures>> [ ] [ snake-textures >>textures textures>> ] ?if ;
-
 M: snake-gadget graft*
-    [ '[ _ do-updates ] 200 milliseconds every ] keep timer<< ;
+    dup '[ _ do-updates ] 200 milliseconds every >>timer
+    snake-textures >>textures
+    drop ;
 
 M: snake-gadget ungraft*
     [ stop-timer f ] change-timer
+    dup find-gl-context ! so texture disposing works properly
     [ values dispose-each f ] change-textures
     drop ;
 
@@ -110,7 +110,7 @@ M: snake-gadget pref-dim*
     drop snake-game-dim [ snake-game-cell-size * 20 + ] map ;
 
 M: snake-gadget draw-gadget*
-    [ load-game-textures game-textures ] keep '[
+    [ textures>> game-textures ] keep '[
         draw-background
         { 10 10 } [
             _ snake-game>>