From 0034a3e67df526d3faab45169513a969b5fd9308 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 11 May 2021 17:48:56 +0200 Subject: [PATCH] Fix restarting the event loop with the GL backend We must reset the proxy to a queue so one can restart it with pending events --- api/sixtyfps-cpp/tests/eventloop.cpp | 4 ++-- sixtyfps_runtime/rendering_backends/gl/eventloop.rs | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/api/sixtyfps-cpp/tests/eventloop.cpp b/api/sixtyfps-cpp/tests/eventloop.cpp index 9fefd2f32..93deab4b2 100644 --- a/api/sixtyfps-cpp/tests/eventloop.cpp +++ b/api/sixtyfps-cpp/tests/eventloop.cpp @@ -28,7 +28,7 @@ TEST_CASE("C++ Timers") } -SCENARIO("Quit from event") +TEST_CASE("Quit from event") { int called = 0; sixtyfps::invoke_from_event_loop([&] { @@ -41,7 +41,7 @@ SCENARIO("Quit from event") } -SCENARIO("Event from thread") +TEST_CASE("Event from thread") { std::atomic called = 0; auto t = std::thread([&] { diff --git a/sixtyfps_runtime/rendering_backends/gl/eventloop.rs b/sixtyfps_runtime/rendering_backends/gl/eventloop.rs index ab540d463..2020d03f1 100644 --- a/sixtyfps_runtime/rendering_backends/gl/eventloop.rs +++ b/sixtyfps_runtime/rendering_backends/gl/eventloop.rs @@ -517,7 +517,12 @@ pub fn run(quit_behavior: sixtyfps_corelib::backend::EventLoopQuitBehavior) { }; #[cfg(not(target_arch = "wasm32"))] - winit_loop.run_return(run_fn); + { + winit_loop.run_return(run_fn); + + *GLOBAL_PROXY.get_or_init(Default::default).lock().unwrap() = Default::default(); + } + #[cfg(target_arch = "wasm32")] { // Since wasm does not have a run_return function that takes a non-static closure,