snake-game.ui: load game textures in graft, dispose in ungraft.
Use find-gl-context to fix dispose bug that was corrupting UI on macOS.factor-shell
parent
9e32cce5ed
commit
4a50385af1
|
@ -95,14 +95,14 @@ CONSTANT: snake-game-cell-size 20
|
||||||
: toggle-game-pause ( snake-gadget -- )
|
: toggle-game-pause ( snake-gadget -- )
|
||||||
snake-game>> [ not ] change-paused? drop ;
|
snake-game>> [ not ] change-paused? drop ;
|
||||||
|
|
||||||
: load-game-textures ( snake-gadget -- textures )
|
|
||||||
dup textures>> [ ] [ snake-textures >>textures textures>> ] ?if ;
|
|
||||||
|
|
||||||
M: snake-gadget graft*
|
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*
|
M: snake-gadget ungraft*
|
||||||
[ stop-timer f ] change-timer
|
[ stop-timer f ] change-timer
|
||||||
|
dup find-gl-context ! so texture disposing works properly
|
||||||
[ values dispose-each f ] change-textures
|
[ values dispose-each f ] change-textures
|
||||||
drop ;
|
drop ;
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@ M: snake-gadget pref-dim*
|
||||||
drop snake-game-dim [ snake-game-cell-size * 20 + ] map ;
|
drop snake-game-dim [ snake-game-cell-size * 20 + ] map ;
|
||||||
|
|
||||||
M: snake-gadget draw-gadget*
|
M: snake-gadget draw-gadget*
|
||||||
[ load-game-textures game-textures ] keep '[
|
[ textures>> game-textures ] keep '[
|
||||||
draw-background
|
draw-background
|
||||||
{ 10 10 } [
|
{ 10 10 } [
|
||||||
_ snake-game>>
|
_ snake-game>>
|
||||||
|
|
Loading…
Reference in New Issue