]> gitweb.factorcode.org Git - factor.git/commitdiff
fix OpenGL stack overflow
authorSlava Pestov <slava@factorcode.org>
Thu, 27 Oct 2005 05:53:59 +0000 (05:53 +0000)
committerSlava Pestov <slava@factorcode.org>
Thu, 27 Oct 2005 05:53:59 +0000 (05:53 +0000)
TODO.FACTOR.txt
library/ui/gadgets.factor
library/ui/paint.factor
library/ui/world.factor

index 497422db9ad028771f859852df524d31326e36bf..95140dc75fd841b053848c20779e0ec3a3c767f6 100644 (file)
@@ -10,7 +10,6 @@
 - deallocate textures and display lists\r
 - nicer-looking buttons\r
 - pixelColor replacement\r
-- opengl stack overflow\r
 \r
 + ui:\r
 \r
index 07534d64db5f863d88a7e2eba6b255f884f2f89c..837bf739a6f6ed9e9522e6ce96c98767d35bd3f6 100644 (file)
@@ -80,13 +80,13 @@ M: gadget children-on ( rect/point gadget -- list )
 : pick-up-list ( rect/point gadget -- gadget/f )
     dupd children-on reverse-slice [ inside? ] find-with nip ;
 
-: translate ( rect/point -- )
-    rect-loc origin [ v+ ] change ;
+: translate ( rect/point -- new-origin )
+    rect-loc origin [ v+ dup ] change ;
 
 : pick-up ( rect/point gadget -- gadget )
     [
         2dup inside? [
-            dup translate 2dup pick-up-list dup
+            dup translate drop 2dup pick-up-list dup
             [ nip pick-up ] [ rot 2drop ] if
         ] [ 2drop f ] if
     ] with-scope ;
index 81b08dd0892dba35bc40daf69352c3f212b49a4b..296c581518f6f559f6709279fc621a36965efb97 100644 (file)
@@ -34,23 +34,25 @@ DEFER: draw-gadget
 : (draw-gadget) ( gadget -- )
     dup dup interior paint-prop* draw-interior
     dup dup boundary paint-prop* draw-boundary
-    dup draw-gadget*
-    visible-children [ draw-gadget ] each ;
+    dup draw-gadget* ;
 
 : do-clip ( gadget -- )
     >absolute clip [ rect-intersect dup ] change
     dup rect-loc swap rect-dim gl-set-clip ;
 
 : with-translation ( gadget quot -- | quot: gadget -- )
+    #! Note: origin variable is still changed after quot returns
     GL_MODELVIEW [
-        >r dup rect-loc dup translate first3 glTranslated
+        >r dup rect-loc translate first3 glTranslated
         r> call
     ] do-matrix ; inline
 
 : draw-gadget ( gadget -- )
     clip get over inside? [
         [
-            dup do-clip [ dup (draw-gadget) ] with-translation
+            dup do-clip
+            [ dup (draw-gadget) ] with-translation
+            visible-children [ draw-gadget ] each
         ] with-scope
     ] when drop ;
 
index ed161a9c42acaa5411f1843ae2a537afecd59fee..356a1ccad7d365c61514a7f2cb4660dad96acdb7 100644 (file)
@@ -99,7 +99,7 @@ M: motion-event handle-event ( event -- )
 
 : world-step ( -- )
     world get world-invalid >r layout-world r>
-    [ update-hand draw-world ] when ;
+    [ update-hand [ draw-world ] USE: test time ] when ;
 
 : next-event ( -- event ? ) <event> dup SDL_PollEvent ;