Author: fperrad
Date: Sun Jul 27 07:00:24 2008
New Revision: 29798

Modified:
   trunk/languages/lua/src/lib/glut.pir

Log:
[Lua] OpenGL, refactor glut callback

Modified: trunk/languages/lua/src/lib/glut.pir
==============================================================================
--- trunk/languages/lua/src/lib/glut.pir        (original)
+++ trunk/languages/lua/src/lib/glut.pir        Sun Jul 27 07:00:24 2008
@@ -162,14 +162,21 @@
     if $I0 goto L1
     lua_error("incorrect argument to function 'glut.DisplayFunc'")
   L1:
-    .local pmc _lua__GLOBAL
+    set_hll_global 'displayFunc.name', funcname
+    .const .Sub display = 'display'
+    glutDisplayFunc(display)
+.end
+
+.sub 'display' :anon
+    .local pmc _lua__GLOBAL, funcname
     _lua__GLOBAL = get_hll_global '_G'
+    funcname = get_hll_global 'displayFunc.name'
     $P0 = _lua__GLOBAL[funcname]
     $I0 = lua_isfunction($P0)
     if $I0 goto L2
     lua_error("Script error: cannot find ", funcname, " function.")
   L2:
-    glutDisplayFunc($P0)
+    $P0()
 .end
 
 
@@ -184,14 +191,21 @@
     if $I0 goto L1
     lua_error("incorrect argument to function 'glut.IdleFunc'")
   L1:
-    .local pmc _lua__GLOBAL
+    set_hll_global 'idleFunc.name', funcname
+    .const .Sub idle = 'idle'
+    glutIdleFunc(idle)
+.end
+
+.sub 'idle' :anon
+    .local pmc _lua__GLOBAL, funcname
     _lua__GLOBAL = get_hll_global '_G'
+    funcname = get_hll_global 'idleFunc.name'
     $P0 = _lua__GLOBAL[funcname]
     $I0 = lua_isfunction($P0)
     if $I0 goto L2
     lua_error("Script error: cannot find ", funcname, " function.")
   L2:
-    glutIdleFunc($P0)
+    $P0()
 .end
 
 
@@ -253,14 +267,30 @@
     if $I0 goto L1
     lua_error("incorrect argument to function 'glut.KeyboardFunc'")
   L1:
-    .local pmc _lua__GLOBAL
+    set_hll_global 'keyboardFunc.name', funcname
+    .const .Sub keyboard = 'keyboard'
+    glutKeyboardFunc(keyboard)
+.end
+
+.sub 'keyboard' :anon
+    .param int key
+    .param int x
+    .param int y
+    .local pmc _lua__GLOBAL, funcname
     _lua__GLOBAL = get_hll_global '_G'
+    funcname = get_hll_global 'keyboardFunc.name'
     $P0 = _lua__GLOBAL[funcname]
     $I0 = lua_isfunction($P0)
     if $I0 goto L2
     lua_error("Script error: cannot find ", funcname, " function.")
   L2:
-    glutKeyboardFunc($P0)
+    new $P1, 'LuaNumber'
+    set $P1, key
+    new $P2, 'LuaNumber'
+    set $P2, x
+    new $P3, 'LuaNumber'
+    set $P3, y
+    $P0($P1, $P2, $P3)
 .end
 
 
@@ -295,17 +325,29 @@
     if $I0 goto L1
     lua_error("incorrect argument to function 'glut.ReshapeFunc'")
   L1:
-    .local pmc _lua__GLOBAL
+    set_hll_global 'reshapeFunc.name', funcname
+    .const .Sub reshape = 'reshape'
+    glutReshapeFunc(reshape)
+.end
+
+.sub 'reshape' :anon
+    .param int width
+    .param int height
+    .local pmc _lua__GLOBAL, funcname
     _lua__GLOBAL = get_hll_global '_G'
+    funcname = get_hll_global 'reshapeFunc.name'
     $P0 = _lua__GLOBAL[funcname]
     $I0 = lua_isfunction($P0)
     if $I0 goto L2
     lua_error("Script error: cannot find ", funcname, " function.")
   L2:
-    glutFunc($P0)
+    new $P1, 'LuaNumber'
+    set $P1, width
+    new $P2, 'LuaNumber'
+    set $P2, height
+    $P0($P1, $P2)
 .end
 
-
 =item C<glut.SwapBuffers ()>
 
 =cut

Reply via email to