internal: add destroyRenderTargetRenderThread
This commit is contained in:
@@ -93,19 +93,10 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
_logger.info(
|
||||
"Viewer is being (or has been) disposed; this will clean up all render targets.");
|
||||
} else {
|
||||
Viewer_destroyRenderTarget(_viewer!, renderTarget.renderTarget);
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
///
|
||||
///
|
||||
Future setRenderTarget(FFIRenderTarget? renderTarget) async {
|
||||
final view = (await getViewAt(0)) as FFIView;
|
||||
if (renderTarget != null) {
|
||||
View_setRenderTarget(view.view, renderTarget.renderTarget);
|
||||
} else {
|
||||
View_setRenderTarget(view.view, nullptr);
|
||||
await withVoidCallback((cb) {
|
||||
Viewer_destroyRenderTargetRenderThread(
|
||||
_viewer!, renderTarget.renderTarget, cb);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1769,8 +1760,7 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
_sceneManager!, material.pointer, cb);
|
||||
}
|
||||
});
|
||||
_grid =
|
||||
FFIAsset(ptr, _sceneManager!, _engine!, _unlitMaterialProvider!);
|
||||
_grid = FFIAsset(ptr, _sceneManager!, _engine!, _unlitMaterialProvider!);
|
||||
}
|
||||
await _grid!.addToScene();
|
||||
await setLayerVisibility(VisibilityLayers.OVERLAY, true);
|
||||
|
||||
@@ -39,6 +39,7 @@ namespace thermion
|
||||
EMSCRIPTEN_KEEPALIVE void Viewer_requestFrameRenderThread(TViewer *viewer, void (*onComplete)());
|
||||
EMSCRIPTEN_KEEPALIVE void Viewer_loadIblRenderThread(TViewer *viewer, const char *iblPath, float intensity, void (*onComplete)());
|
||||
EMSCRIPTEN_KEEPALIVE void Viewer_createRenderTargetRenderThread(TViewer *viewer, intptr_t texture, uint32_t width, uint32_t height, void (*onComplete)(TRenderTarget *));
|
||||
EMSCRIPTEN_KEEPALIVE void Viewer_destroyRenderTargetRenderThread(TViewer *viewer, TRenderTarget *tRenderTarget, void (*onComplete)());
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void Engine_buildMaterialRenderThread(TEngine *tEngine, const uint8_t* materialData, size_t length, void (*onComplete)(TMaterial *));
|
||||
EMSCRIPTEN_KEEPALIVE void Engine_destroyMaterialRenderThread(TEngine *tEngine, TMaterial *tMaterial, void (*onComplete)());
|
||||
|
||||
@@ -279,6 +279,16 @@ extern "C"
|
||||
auto fut = _rl->add_task(lambda);
|
||||
}
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void Viewer_destroyRenderTargetRenderThread(TViewer *tViewer, TRenderTarget *tRenderTarget, void (*onComplete)()) {
|
||||
std::packaged_task<void()> lambda(
|
||||
[=]() mutable
|
||||
{
|
||||
Viewer_destroyRenderTarget(tViewer, tRenderTarget);
|
||||
onComplete();
|
||||
});
|
||||
auto fut = _rl->add_task(lambda);
|
||||
}
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void Engine_buildMaterialRenderThread(TEngine *tEngine, const uint8_t *materialData, size_t length, void (*onComplete)(TMaterial *))
|
||||
{
|
||||
std::packaged_task<void()> lambda(
|
||||
|
||||
Reference in New Issue
Block a user