From: Pierre d'Herbemont Date: Fri, 5 Mar 2010 10:01:32 +0000 (+0100) Subject: luasd: Force a garbage collect at the end of Run(). X-Git-Tag: 1.1.0-pre1~505 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=503a7851c50a83d1249528787929afeea3b81c93;p=vlc luasd: Force a garbage collect at the end of Run(). Generally the core won't call Close() until the end of vlc's life. Hence it's our last chance to gc collect before the end of vlc's life. This gets important because some sd (freebox...) will open a vlc.stream which (and that's an other issue) will eat 12MB at creation for a cache that will never be completely filed. It also mean that if you vlc.stream N small files, we may consume N * 12MB until finally lua decides to garabge collect. And because we don't teach lua that vlc.stream takes 12MB this is not likely to happen. --- diff --git a/modules/misc/lua/services_discovery.c b/modules/misc/lua/services_discovery.c index 0b33f93eee..6dcbc4af14 100644 --- a/modules/misc/lua/services_discovery.c +++ b/modules/misc/lua/services_discovery.c @@ -172,5 +172,10 @@ static void* Run( void *data ) return NULL; } msg_Dbg( p_sd, "LuaSD script loaded: %s", p_sys->psz_filename ); + + /* Force garbage collection, because the core will keep the SD + * open, but lua will never gc until lua_close(). */ + lua_gc( L, LUA_GCCOLLECT, 0 ); + return NULL; }