Skip to content

Commit a764a1e

Browse files
Update RenderingMode.hx
1 parent 12e0304 commit a764a1e

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/ffmpeg/RenderingMode.hx

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,42 @@ class RenderingMode {
558558

559559
// ------------------ Stop Render ------------------
560560
static function stopRender() {
561+
#if android
562+
if (!started || cleanupLock) return;
563+
cleanupLock = true;
564+
565+
Sys.println("Android: Stopping render with cleanup");
566+
567+
// Important: Unbind GL objects before context loss
568+
GL.bindBuffer(pboTarget, null);
569+
for (pbo in pbos) {
570+
try {
571+
GL.deleteBuffer(pbo);
572+
} catch (e:Dynamic) {}
573+
}
574+
pbos = [];
575+
576+
// Force GC to reclaim memory
577+
neash.vm.Gc.run(true);
578+
579+
// Move file from tmpfs if used
580+
try {
581+
var tmpFile = "/dev/shm/ffmpeg/" + songName + ".mp4";
582+
var destFile = lime.system.System.applicationStorageDirectory + "/rendered/" + songName + ".mp4";
583+
584+
if (FileSystem.exists(tmpFile) && FileSystem.exists(destFile)) {
585+
// Copy with progress
586+
var src = sys.io.File.read(tmpFile, true);
587+
var dst = sys.io.File.write(destFile, true);
588+
dst.writeInput(src);
589+
src.close();
590+
dst.close();
591+
592+
// Delete tmp file
593+
FileSystem.deleteFile(tmpFile);
594+
}
595+
} catch (e:Dynamic) {}
596+
#else
561597
if (!started || cleanupLock) return;
562598
cleanupLock = true;
563599

@@ -628,5 +664,6 @@ class RenderingMode {
628664
cleanupLock = false;
629665

630666
Sys.println("Rendering Mode System - Cleanup complete!");
667+
#end
631668
}
632669
}

0 commit comments

Comments
 (0)