Переглянути джерело

LibThreading: Invoke BackgroundAction completions on origin event loop

We now capture the origin thread's current event loop when setting up
a BackgroundAction and then invoke the on_complete callback on that same
event loop.
Andreas Kling 3 роки тому
батько
коміт
d1cea57246
1 змінених файлів з 2 додано та 2 видалено
  1. 2 2
      Userland/Libraries/LibThreading/BackgroundAction.h

+ 2 - 2
Userland/Libraries/LibThreading/BackgroundAction.h

@@ -56,10 +56,10 @@ private:
         , m_action(move(action))
         , m_on_complete(move(on_complete))
     {
-        enqueue_work([this] {
+        enqueue_work([this, origin_event_loop = &Core::EventLoop::current()] {
             m_result = m_action(*this);
             if (m_on_complete) {
-                deferred_invoke([this] {
+                origin_event_loop->deferred_invoke([this] {
                     m_on_complete(m_result.release_value());
                     remove_from_parent();
                 });