add RenderTarget_destroyRenderThread

This commit is contained in:
Nick Fisher
2025-04-17 13:35:07 +08:00
parent 1be1979c05
commit e1d5d14ff7
3 changed files with 20 additions and 4 deletions

View File

@@ -1,5 +1,3 @@
import 'dart:ffi';
import 'package:thermion_dart/src/viewer/src/ffi/src/callbacks.dart';
import 'package:thermion_dart/src/viewer/src/ffi/src/ffi_filament_app.dart';
import 'package:thermion_dart/src/viewer/src/ffi/src/ffi_texture.dart';
@@ -25,6 +23,6 @@ class FFIRenderTarget extends RenderTarget {
@override
Future destroy() async {
await withVoidCallback((cb) => RenderTarget_destroy(app.engine, renderTarget));
await withVoidCallback((cb) => RenderTarget_destroyRenderThread(app.engine, renderTarget, cb));
}
}

View File

@@ -186,6 +186,12 @@ namespace thermion
TTexture *depth,
void (*onComplete)(TRenderTarget *)
);
EMSCRIPTEN_KEEPALIVE void RenderTarget_destroyRenderThread(
TEngine *tEngine,
TRenderTarget *tRenderTarget,
void (*onComplete)()
);
// TextureSampler methods
EMSCRIPTEN_KEEPALIVE void TextureSampler_createRenderThread(void (*onComplete)(TTextureSampler*));

View File

@@ -784,7 +784,19 @@ EMSCRIPTEN_KEEPALIVE void SceneAsset_createFromFilamentAssetRenderThread(
auto fut = _renderThread->add_task(lambda);
}
EMSCRIPTEN_KEEPALIVE void RenderTarget_destroyRenderThread(
TEngine *tEngine,
TRenderTarget *tRenderTarget,
void (*onComplete)()
) {
std::packaged_task<void()> lambda(
[=]() mutable
{
RenderTarget_destroy(tEngine, tRenderTarget);
onComplete();
});
auto fut = _renderThread->add_task(lambda);
}
EMSCRIPTEN_KEEPALIVE void TextureSampler_createRenderThread(void (*onComplete)(TTextureSampler *))