update all void callbacks to accept an integer requestId
This commit is contained in:
@@ -97,7 +97,7 @@ late NativeCallable<Void Function(Int32)>
|
|||||||
_voidCallbackNativeCallable = NativeCallable<Void Function(Int32)>.listener(_voidCallbackHandler);
|
_voidCallbackNativeCallable = NativeCallable<Void Function(Int32)>.listener(_voidCallbackHandler);
|
||||||
|
|
||||||
Future<void> withVoidCallback(
|
Future<void> withVoidCallback(
|
||||||
Function(int, Pointer<NativeFunction<Void Function(int)>>) func) async {
|
Function(int, Pointer<NativeFunction<Void Function(Int32)>>) func) async {
|
||||||
var requestId = _requestId;
|
var requestId = _requestId;
|
||||||
_requestId++;
|
_requestId++;
|
||||||
final completer = Completer();
|
final completer = Completer();
|
||||||
@@ -107,7 +107,6 @@ Future<void> withVoidCallback(
|
|||||||
func.call(requestId, _voidCallbackNativeCallable.nativeFunction.cast());
|
func.call(requestId, _voidCallbackNativeCallable.nativeFunction.cast());
|
||||||
|
|
||||||
await completer.future;
|
await completer.future;
|
||||||
// nativeCallable.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Pointer<T>> withPointerCallback<T extends NativeType>(
|
Future<Pointer<T>> withPointerCallback<T extends NativeType>(
|
||||||
|
|||||||
@@ -227,8 +227,8 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
for (final swapChain in _swapChains.keys.toList()) {
|
for (final swapChain in _swapChains.keys.toList()) {
|
||||||
await destroySwapChain(swapChain);
|
await destroySwapChain(swapChain);
|
||||||
}
|
}
|
||||||
await withVoidCallback((cb) async {
|
await withVoidCallback((requestId, cb) async {
|
||||||
Engine_destroyRenderThread(engine, cb);
|
Engine_destroyRenderThread(engine, requestId, cb);
|
||||||
});
|
});
|
||||||
|
|
||||||
RenderThread_destroy();
|
RenderThread_destroy();
|
||||||
@@ -248,7 +248,7 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
///
|
///
|
||||||
Future destroyAsset(covariant FFIAsset asset) async {
|
Future destroyAsset(covariant FFIAsset asset) async {
|
||||||
await withVoidCallback(
|
await withVoidCallback(
|
||||||
(cb) => SceneAsset_destroyRenderThread(asset.asset, cb));
|
(requestId, cb) => SceneAsset_destroyRenderThread(asset.asset, requestId, cb));
|
||||||
await asset.dispose();
|
await asset.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -536,22 +536,23 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
Renderer_beginFrameRenderThread(
|
Renderer_beginFrameRenderThread(
|
||||||
renderer, swapchain.swapChain, 0.toBigInt, cb);
|
renderer, swapchain.swapChain, 0.toBigInt, cb);
|
||||||
});
|
});
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId, cb) {
|
||||||
Renderer_renderRenderThread(
|
Renderer_renderRenderThread(
|
||||||
renderer,
|
renderer,
|
||||||
view.view,
|
view.view,
|
||||||
|
requestId,
|
||||||
cb,
|
cb,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId, cb) {
|
||||||
Renderer_endFrameRenderThread(renderer, cb);
|
Renderer_endFrameRenderThread(renderer, requestId, cb);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (FILAMENT_SINGLE_THREADED) {
|
if (FILAMENT_SINGLE_THREADED) {
|
||||||
await withVoidCallback((cb) => Engine_executeRenderThread(engine, cb));
|
await withVoidCallback((requestId, cb) => Engine_executeRenderThread(engine, requestId, cb));
|
||||||
} else {
|
} else {
|
||||||
await withVoidCallback(
|
await withVoidCallback(
|
||||||
(cb) => Engine_flushAndWaitRenderThread(engine, cb));
|
(requestId, cb) => Engine_flushAndWaitRenderThread(engine, requestId, cb));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -723,10 +724,11 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
final viewport = await view.getViewport();
|
final viewport = await view.getViewport();
|
||||||
final pixelBuffer =
|
final pixelBuffer =
|
||||||
Uint8List(viewport.width * viewport.height * 4 * sizeOf<Float>());
|
Uint8List(viewport.width * viewport.height * 4 * sizeOf<Float>());
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId, cb) {
|
||||||
Renderer_renderRenderThread(
|
Renderer_renderRenderThread(
|
||||||
renderer,
|
renderer,
|
||||||
view.view,
|
view.view,
|
||||||
|
requestId,
|
||||||
cb,
|
cb,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@@ -734,7 +736,7 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
if (captureRenderTarget && view.renderTarget == null) {
|
if (captureRenderTarget && view.renderTarget == null) {
|
||||||
throw Exception();
|
throw Exception();
|
||||||
}
|
}
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId, cb) {
|
||||||
Renderer_readPixelsRenderThread(
|
Renderer_readPixelsRenderThread(
|
||||||
renderer,
|
renderer,
|
||||||
view.view,
|
view.view,
|
||||||
@@ -749,20 +751,21 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
pixelDataType.value,
|
pixelDataType.value,
|
||||||
pixelBuffer.address,
|
pixelBuffer.address,
|
||||||
pixelBuffer.length,
|
pixelBuffer.length,
|
||||||
|
requestId,
|
||||||
cb);
|
cb);
|
||||||
});
|
});
|
||||||
pixelBuffers.add((view, pixelBuffer));
|
pixelBuffers.add((view, pixelBuffer));
|
||||||
}
|
}
|
||||||
|
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId, cb) {
|
||||||
Renderer_endFrameRenderThread(renderer, cb);
|
Renderer_endFrameRenderThread(renderer, requestId, cb);
|
||||||
});
|
});
|
||||||
|
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId, cb) {
|
||||||
if (FILAMENT_SINGLE_THREADED) {
|
if (FILAMENT_SINGLE_THREADED) {
|
||||||
Engine_executeRenderThread(engine, cb);
|
Engine_executeRenderThread(engine, requestId, cb);
|
||||||
} else {
|
} else {
|
||||||
Engine_flushAndWaitRenderThread(engine, cb);
|
Engine_flushAndWaitRenderThread(engine, requestId, cb);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return pixelBuffers;
|
return pixelBuffers;
|
||||||
@@ -823,12 +826,13 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
|
|
||||||
resources.add(FinalizableUint8List(resourceUris[i], resourceData));
|
resources.add(FinalizableUint8List(resourceUris[i], resourceData));
|
||||||
|
|
||||||
await withVoidCallback((cb) =>
|
await withVoidCallback((requestId, cb) =>
|
||||||
GltfResourceLoader_addResourceDataRenderThread(
|
GltfResourceLoader_addResourceDataRenderThread(
|
||||||
gltfResourceLoader,
|
gltfResourceLoader,
|
||||||
resourceUris[i],
|
resourceUris[i],
|
||||||
resourceData.address,
|
resourceData.address,
|
||||||
resourceData.lengthInBytes,
|
resourceData.lengthInBytes,
|
||||||
|
requestId,
|
||||||
cb));
|
cb));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -864,8 +868,8 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
SceneAsset_createFromFilamentAssetRenderThread(engine,
|
SceneAsset_createFromFilamentAssetRenderThread(engine,
|
||||||
gltfAssetLoader, nameComponentManager, filamentAsset, cb));
|
gltfAssetLoader, nameComponentManager, filamentAsset, cb));
|
||||||
|
|
||||||
await withVoidCallback((cb) => GltfResourceLoader_destroyRenderThread(
|
await withVoidCallback((requestId, cb) => GltfResourceLoader_destroyRenderThread(
|
||||||
engine, gltfResourceLoader, cb));
|
engine, gltfResourceLoader, requestId, cb));
|
||||||
|
|
||||||
return FFIAsset(asset, this, animationManager.cast<TAnimationManager>());
|
return FFIAsset(asset, this, animationManager.cast<TAnimationManager>());
|
||||||
} finally {
|
} finally {
|
||||||
@@ -883,10 +887,10 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
View_setColorGrading(view.view, nullptr);
|
View_setColorGrading(view.view, nullptr);
|
||||||
for (final cg in view.colorGrading.entries) {
|
for (final cg in view.colorGrading.entries) {
|
||||||
await withVoidCallback(
|
await withVoidCallback(
|
||||||
(cb) => Engine_destroyColorGradingRenderThread(engine, cg.value, cb));
|
(requestId, cb) => Engine_destroyColorGradingRenderThread(engine, cg.value, requestId, cb));
|
||||||
}
|
}
|
||||||
await withVoidCallback(
|
await withVoidCallback(
|
||||||
(cb) => Engine_destroyViewRenderThread(engine, view.view, cb));
|
(requestId, cb) => Engine_destroyViewRenderThread(engine, view.view, requestId, cb));
|
||||||
for (final swapchain in _swapChains.keys) {
|
for (final swapchain in _swapChains.keys) {
|
||||||
if (_swapChains[swapchain]!.contains(view)) {
|
if (_swapChains[swapchain]!.contains(view)) {
|
||||||
_swapChains[swapchain]!.remove(view);
|
_swapChains[swapchain]!.remove(view);
|
||||||
@@ -898,7 +902,7 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
|
|
||||||
Future destroyScene(covariant FFIScene scene) async {
|
Future destroyScene(covariant FFIScene scene) async {
|
||||||
await withVoidCallback(
|
await withVoidCallback(
|
||||||
(cb) => Engine_destroySceneRenderThread(engine, scene.scene, cb));
|
(requestId, cb) => Engine_destroySceneRenderThread(engine, scene.scene, requestId, cb));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Pointer<TColorGrading>> createColorGrading(ToneMapper mapper) async {
|
Future<Pointer<TColorGrading>> createColorGrading(ToneMapper mapper) async {
|
||||||
@@ -1024,10 +1028,10 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
///
|
///
|
||||||
Future flush() async {
|
Future flush() async {
|
||||||
if (FILAMENT_SINGLE_THREADED) {
|
if (FILAMENT_SINGLE_THREADED) {
|
||||||
await withVoidCallback((cb) => Engine_executeRenderThread(engine, cb));
|
await withVoidCallback((requestId, cb) => Engine_executeRenderThread(engine, requestId, cb));
|
||||||
} else {
|
} else {
|
||||||
await withVoidCallback(
|
await withVoidCallback(
|
||||||
(cb) => Engine_flushAndWaitRenderThread(engine, cb));
|
(requestId, cb) => Engine_flushAndWaitRenderThread(engine, requestId, cb));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ class FFIMaterial extends Material {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future destroy() async {
|
Future destroy() async {
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId, cb) {
|
||||||
Engine_destroyMaterialRenderThread(app.engine, pointer, cb);
|
Engine_destroyMaterialRenderThread(app.engine, pointer, requestId, cb);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,8 +168,8 @@ class FFIMaterialInstance extends MaterialInstance {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future destroy() async {
|
Future destroy() async {
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId, cb) {
|
||||||
Engine_destroyMaterialInstanceRenderThread(app.engine, this.pointer, cb);
|
Engine_destroyMaterialInstanceRenderThread(app.engine, this.pointer, requestId, cb);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,6 @@ class FFIRenderTarget extends RenderTarget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future destroy() async {
|
Future destroy() async {
|
||||||
await withVoidCallback((cb) => RenderTarget_destroyRenderThread(app.engine, renderTarget, cb));
|
await withVoidCallback((requestId, cb) => RenderTarget_destroyRenderThread(app.engine, renderTarget, requestId, cb));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ class FFITexture extends Texture {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> dispose() async {
|
Future<void> dispose() async {
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId, cb) {
|
||||||
Engine_destroyTextureRenderThread(_engine, pointer, cb);
|
Engine_destroyTextureRenderThread(_engine, pointer, requestId,cb);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,8 +183,8 @@ class FFILinearImage extends LinearImage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> destroy() async {
|
Future<void> destroy() async {
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId, cb) {
|
||||||
Image_destroyRenderThread(this.pointer, cb);
|
Image_destroyRenderThread(this.pointer, requestId, cb);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,8 +316,8 @@ class FFITextureSampler extends TextureSampler {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
Future<void> setAnisotropy(double anisotropy) async {
|
Future<void> setAnisotropy(double anisotropy) async {
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId,cb) {
|
||||||
TextureSampler_setAnisotropyRenderThread(pointer, anisotropy, cb);
|
TextureSampler_setAnisotropyRenderThread(pointer, anisotropy, requestId,cb);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -334,8 +334,8 @@ class FFITextureSampler extends TextureSampler {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future dispose() async {
|
Future dispose() async {
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId,cb) {
|
||||||
TextureSampler_destroyRenderThread(pointer, cb);
|
TextureSampler_destroyRenderThread(pointer, requestId,cb);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,8 +113,8 @@ class FFIView extends View {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future setBloom(bool enabled, double strength) async {
|
Future setBloom(bool enabled, double strength) async {
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((requestId,cb) {
|
||||||
View_setBloomRenderThread(view, enabled, strength, cb);
|
View_setBloomRenderThread(view, enabled, strength, requestId,cb);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -116,14 +116,14 @@ class ThermionViewerFFI extends ThermionViewer {
|
|||||||
///
|
///
|
||||||
@override
|
@override
|
||||||
Future render() async {
|
Future render() async {
|
||||||
await withVoidCallback((cb) =>
|
await withVoidCallback((requestId,cb) =>
|
||||||
RenderTicker_renderRenderThread(app.renderTicker, 0.toBigInt, cb));
|
RenderTicker_renderRenderThread(app.renderTicker, 0.toBigInt, requestId,cb));
|
||||||
if (FILAMENT_SINGLE_THREADED) {
|
if (FILAMENT_SINGLE_THREADED) {
|
||||||
await withVoidCallback(
|
await withVoidCallback(
|
||||||
(cb) => Engine_executeRenderThread(app.engine, cb));
|
(requestId,cb) => Engine_executeRenderThread(app.engine, requestId,cb));
|
||||||
} else {
|
} else {
|
||||||
await withVoidCallback(
|
await withVoidCallback(
|
||||||
(cb) => Engine_flushAndWaitRenderThread(app.engine, cb));
|
(requestId,cb) => Engine_flushAndWaitRenderThread(app.engine, requestId,cb));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -301,7 +301,7 @@ class ThermionViewerFFI extends ThermionViewer {
|
|||||||
|
|
||||||
if (skybox != null) {
|
if (skybox != null) {
|
||||||
await withVoidCallback(
|
await withVoidCallback(
|
||||||
(cb) => Engine_destroySkyboxRenderThread(app.engine, skybox!, cb));
|
(requestId,cb) => Engine_destroySkyboxRenderThread(app.engine, skybox!, requestId,cb));
|
||||||
skybox = null;
|
skybox = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -313,8 +313,8 @@ class ThermionViewerFFI extends ThermionViewer {
|
|||||||
Future removeIbl() async {
|
Future removeIbl() async {
|
||||||
if (indirectLight != null) {
|
if (indirectLight != null) {
|
||||||
Scene_setIndirectLight(scene.scene, nullptr);
|
Scene_setIndirectLight(scene.scene, nullptr);
|
||||||
await withVoidCallback((cb) => Engine_destroyIndirectLightRenderThread(
|
await withVoidCallback((requestId,cb) => Engine_destroyIndirectLightRenderThread(
|
||||||
app.engine, indirectLight!, cb));
|
app.engine, indirectLight!, requestId,cb));
|
||||||
indirectLight = null;
|
indirectLight = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user