From 4011a566e7b2e28ea2c97521ac3fb59a2831ad6e Mon Sep 17 00:00:00 2001 From: cnjhb Date: Mon, 25 Aug 2025 21:21:57 +0800 Subject: [PATCH 1/2] fix(obj): compatible with lua 5.1 --- src/obj.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/obj.c b/src/obj.c index 621d975..2f39815 100644 --- a/src/obj.c +++ b/src/obj.c @@ -1,3 +1,4 @@ +#include "lua.h" #include "luavgl.h" #include "private.h" @@ -22,8 +23,13 @@ static void obj_delete_cb(lv_event_t *e) goto pop_exit; } +#if (LUA_VERSION_NUM >= 502) lua_pushnil(L); lua_setuservalue(L, -2); +#else + lua_getglobal(L, "_G"); + lua_setuservalue(L, -2); +#endif luavgl_obj_t *lobj = luavgl_to_lobj(L, -1); if (lobj->lua_created) @@ -860,6 +866,7 @@ static int obj_property_h(lua_State *L, lv_obj_t *obj, bool set) static int obj_property_user_data(lua_State *L, lv_obj_t *obj, bool set) { +#if (LUA_VERSION_NUM >= 502) if (set) { lua_pushvalue(L, -1); lua_setuservalue(L, 1); @@ -867,6 +874,17 @@ static int obj_property_user_data(lua_State *L, lv_obj_t *obj, bool set) lua_getuservalue(L, 1); } return 1; +#else + if (set) { + lua_getuservalue(L, 1); + lua_pushvalue(L, -1); + lua_rawseti(L, -2, 1); + } else { + lua_getuservalue(L, 1); + lua_rawgeti(L, -1, 1); + } + return 1; +#endif } static const luavgl_property_ops_t obj_property_ops[] = { @@ -1155,6 +1173,13 @@ LUALIB_API luavgl_obj_t *luavgl_add_lobj(lua_State *L, lv_obj_t *obj) lua_pushvalue(L, -2); lua_rawset(L, LUA_REGISTRYINDEX); +#if (LUA_VERSION_NUM == 501) + lua_pushlightuserdata(L, obj); + lua_rawget(L, LUA_REGISTRYINDEX); + lua_newtable(L); + lua_setuservalue(L, -2); +#endif + LV_LOG_INFO("add obj: %p to lua, lobj: %p", obj, lua_touserdata(L, -1)); return lobj; } From e84f365069aacb42c34d6821f41f4e510db3027a Mon Sep 17 00:00:00 2001 From: cnjhb Date: Tue, 26 Aug 2025 09:56:45 +0800 Subject: [PATCH 2/2] fix something --- src/obj.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/obj.c b/src/obj.c index 2f39815..c50749f 100644 --- a/src/obj.c +++ b/src/obj.c @@ -1,4 +1,3 @@ -#include "lua.h" #include "luavgl.h" #include "private.h" @@ -27,7 +26,7 @@ static void obj_delete_cb(lv_event_t *e) lua_pushnil(L); lua_setuservalue(L, -2); #else - lua_getglobal(L, "_G"); + lua_pushglobaltable(L); lua_setuservalue(L, -2); #endif @@ -1174,8 +1173,6 @@ LUALIB_API luavgl_obj_t *luavgl_add_lobj(lua_State *L, lv_obj_t *obj) lua_rawset(L, LUA_REGISTRYINDEX); #if (LUA_VERSION_NUM == 501) - lua_pushlightuserdata(L, obj); - lua_rawget(L, LUA_REGISTRYINDEX); lua_newtable(L); lua_setuservalue(L, -2); #endif