Added Source:clone() and love.audio.newSource(source): creates a new (stopped) Source which has all of the settable state of the original.

Static sources don’t duplicate their OpenAL data buffer when cloned (resolves issue #319). Cloned streaming sources also clone the original Decoder.
This commit is contained in:
Alex Szpakowski
2013-12-20 00:20:41 -04:00
parent d0d629a314
commit e6f2d4f1ac
8 changed files with 126 additions and 24 deletions
+9
View File
@@ -41,6 +41,15 @@ int w_getSourceCount(lua_State *L)
int w_newSource(lua_State *L)
{
if (luax_istype(L, 1, AUDIO_SOURCE_T))
{
Source *t = luax_checksource(L, 1);
Source *clone = 0;
EXCEPT_GUARD(clone = t->clone();)
luax_pushtype(L, "Source", AUDIO_SOURCE_T, clone);
return 1;
}
if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T))
luax_convobj(L, 1, "filesystem", "newFileData");