]> git.sesse.net Git - vlc/commitdiff
luasd: Force a garbage collect at the end of Run().
authorPierre d'Herbemont <pdherbemont@free.fr>
Fri, 5 Mar 2010 10:01:32 +0000 (11:01 +0100)
committerPierre d'Herbemont <pdherbemont@free.fr>
Fri, 5 Mar 2010 10:06:26 +0000 (11:06 +0100)
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.

modules/misc/lua/services_discovery.c

index 0b33f93eee8099ce175ee2297a7969588bd82dcc..6dcbc4af1452e0797ba408f24d199963a2b84b04 100644 (file)
@@ -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;
 }