1
0
Fork 0

Fix allocation failures in BackgroundThread

This commit is contained in:
Robbert van der Helm 2023-01-06 16:03:48 +01:00
parent c0e9b29bf4
commit 935bf6f7f3

View file

@ -8,6 +8,7 @@ use std::sync::{Arc, Weak};
use std::thread::{self, JoinHandle}; use std::thread::{self, JoinHandle};
use super::MainThreadExecutor; use super::MainThreadExecutor;
use crate::util::permit_alloc;
/// See the module's documentation. This is a slimmed down version of the `LinuxEventLoop` that can /// See the module's documentation. This is a slimmed down version of the `LinuxEventLoop` that can
/// be used with other OS and plugin format specific event loop implementations. /// be used with other OS and plugin format specific event loop implementations.
@ -52,7 +53,9 @@ where
} }
pub fn schedule(&self, task: T) -> bool { pub fn schedule(&self, task: T) -> bool {
self.tasks_sender.try_send(Message::Task(task)).is_ok() // NOTE: This may check the current thread ID, which involves an allocation whenever this
// first happens on a new thread because of the way thread local storage works
permit_alloc(|| self.tasks_sender.try_send(Message::Task(task)).is_ok())
} }
} }