From 4eebe02f29c5c918023c59f9b3cfe1f6645bc2da Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Fri, 13 Oct 2023 11:22:42 +0800 Subject: [PATCH] add destroy_swap_chain_ffi and move setRendering into its own task --- ios/include/PolyvoxFilamentFFIApi.h | 1 + ios/src/PolyvoxFilamentFFIApi.cpp | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ios/include/PolyvoxFilamentFFIApi.h b/ios/include/PolyvoxFilamentFFIApi.h index 78a024b2..7c3b6d50 100644 --- a/ios/include/PolyvoxFilamentFFIApi.h +++ b/ios/include/PolyvoxFilamentFFIApi.h @@ -17,6 +17,7 @@ typedef void (*FilamentRenderCallback)(void* const owner); FLUTTER_PLUGIN_EXPORT void* const create_filament_viewer_ffi(void* const context, void* const platform, const char* uberArchivePath, const ResourceLoaderWrapper* const loader, void (*renderCallback)(void* const renderCallbackOwner), void* const renderCallbackOwner); FLUTTER_PLUGIN_EXPORT void create_swap_chain_ffi(void* const viewer, void* const surface, uint32_t width, uint32_t height); +FLUTTER_PLUGIN_EXPORT void destroy_swap_chain_ffi(void* const viewer); FLUTTER_PLUGIN_EXPORT void create_render_target_ffi(void* const viewer, intptr_t nativeTextureId, uint32_t width, uint32_t height); FLUTTER_PLUGIN_EXPORT void destroy_filament_viewer_ffi(void* const viewer); FLUTTER_PLUGIN_EXPORT void render_ffi(void* const viewer); diff --git a/ios/src/PolyvoxFilamentFFIApi.cpp b/ios/src/PolyvoxFilamentFFIApi.cpp index 582bb702..b3ba8099 100644 --- a/ios/src/PolyvoxFilamentFFIApi.cpp +++ b/ios/src/PolyvoxFilamentFFIApi.cpp @@ -72,7 +72,12 @@ public: void setRendering(bool rendering) { - _rendering = rendering; + std::packaged_task lambda([&]() mutable + { + this->_rendering = rendering; + }); + auto fut = add_task(lambda); + fut.wait(); } void doRender() @@ -143,6 +148,17 @@ extern "C" fut.wait(); } + FLUTTER_PLUGIN_EXPORT void destroy_swap_chain_ffi(void* const viewer) + { + Log("Destroying swapchain"); + std::packaged_task lambda([&]() mutable + { + destroy_swap_chain(viewer); + }); + auto fut = _rl->add_task(lambda); + fut.wait(); + } + FLUTTER_PLUGIN_EXPORT void create_render_target_ffi(void* const viewer, intptr_t nativeTextureId, uint32_t width, uint32_t height) { std::packaged_task lambda([&]() mutable