//--------------------------------------------------------------------------//
static lua_State *lstate = NULL;
+static jmp_buf panic_jmp;
static const struct luaL_reg _elua_edje_api [] =
{
{"seconds", _elua_seconds}, // get seconds
{"looptime", _elua_looptime}, // get loop time
{"date", _elua_date}, // get date in a table
+
+ // emit
+ // message
+
+ // now evas stuff (create objects, manipulate, delete etc.)
+ // now more convenient layer on top for objects
+
+ // funcs to provide:
+ // // shutdown
+ // // message
+ // // resize
+ // // get dragable pos
+ // // set dragable pos
+ // // get part text
+ // // set part text
+ // // get swallow part
+ // // set swallow part
+
{NULL, NULL} // end
};
static const struct luaL_reg _elua_edje_meta [] =
ptr2 = realloc(ptr, nsize);
if (ptr2) return ptr2;
- ERR("Edje Lua cannot re-allocate %i bytes\n", nsize);
+ ERR("Edje Lua cannot re-allocate %i bytes", nsize);
return ptr2;
}
L = elt->obj.ed->L;
if (!L) return 0;
lua_rawgeti(L, LUA_REGISTRYINDEX, elt->fn_ref);
+ if (setjmp(panic_jmp) == 1)
+ {
+ ERR("Timer callback panic");
+ _edje_lua2_error(L, err);
+ _elua_obj_free(L, (Edje_Lua_Obj *)elt);
+ _elua_gc(L);
+ return 0;
+ }
if ((err = lua_pcall(L, 0, 1, 0)))
{
_edje_lua2_error(L, err);
L = ela->obj.ed->L;
if (!L) return 0;
lua_rawgeti(L, LUA_REGISTRYINDEX, ela->fn_ref);
+ if (setjmp(panic_jmp) == 1)
+ {
+ ERR("Animator callback panic");
+ _edje_lua2_error(L, err);
+ _elua_obj_free(L, (Edje_Lua_Obj *)ela);
+ _elua_gc(L);
+ return 0;
+ }
if ((err = lua_pcall(L, 0, 1, 0)))
{
_edje_lua2_error(L, err);
if (t > 1.0) t = 1.0;
lua_rawgeti(L, LUA_REGISTRYINDEX, elt->fn_ref);
lua_pushnumber(L, t);
+ if (setjmp(panic_jmp) == 1)
+ {
+ ERR("Transition callback panic");
+ _edje_lua2_error(L, err);
+ _elua_obj_free(L, (Edje_Lua_Obj *)elt);
+ _elua_gc(L);
+ return 0;
+ }
if ((err = lua_pcall(L, 1, 1, 0)))
{
_edje_lua2_error(L, err);
lua_tostring(ed->L, -1));
}
free(data);
+ if (setjmp(panic_jmp) == 1)
+ {
+ ERR("Script init panic");
+ return;
+ }
if ((err = lua_pcall(ed->L, 0, 0, 0)))
_edje_lua2_error(ed->L, err);
}