From 47377b550f394e8d7fb1a79e8abd801214865027 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Mon, 8 Jul 2024 16:34:22 +0200 Subject: [PATCH] Revert "rusticl/queue: gracefully stop the worker thread" Apparently this code caused issues and the fix was only papering over the issue, which I now I can't trigger anyway. This reverts commit 9d458b7fc15a87720397b5b3d94a0971ed4aa59d. Fixes: 9d458b7fc15 ("rusticl/queue: gracefully stop the worker thread") Part-of: --- src/gallium/frontends/rusticl/core/queue.rs | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/src/gallium/frontends/rusticl/core/queue.rs b/src/gallium/frontends/rusticl/core/queue.rs index 28442bcf22e..522d77e476c 100644 --- a/src/gallium/frontends/rusticl/core/queue.rs +++ b/src/gallium/frontends/rusticl/core/queue.rs @@ -10,7 +10,6 @@ use mesa_rust_util::properties::*; use rusticl_opencl_gen::*; use std::mem; -use std::mem::ManuallyDrop; use std::ops::Deref; use std::sync::mpsc; use std::sync::Arc; @@ -72,7 +71,7 @@ struct QueueState { last: Weak, // `Sync` on `Sender` was stabilized in 1.72, until then, put it into our Mutex. // see https://github.com/rust-lang/rust/commit/5f56956b3c7edb9801585850d1f41b0aeb1888ff - chan_in: ManuallyDrop>>>, + chan_in: mpsc::Sender>>, } pub struct Queue { @@ -82,7 +81,7 @@ pub struct Queue { pub props: cl_command_queue_properties, pub props_v2: Option>, state: Mutex, - thrd: ManuallyDrop>, + _thrd: JoinHandle<()>, } impl_cl_type_trait!(cl_command_queue, Queue, CL_INVALID_COMMAND_QUEUE); @@ -114,9 +113,9 @@ impl Queue { state: Mutex::new(QueueState { pending: Vec::new(), last: Weak::new(), - chan_in: ManuallyDrop::new(tx_q), + chan_in: tx_q, }), - thrd: ManuallyDrop::new(thread::Builder::new() + _thrd: thread::Builder::new() .name("rusticl queue thread".into()) .spawn(move || loop { let r = rx_t.recv(); @@ -168,7 +167,7 @@ impl Queue { flush_events(&mut flushed, &ctx); }) - .unwrap()), + .unwrap(), })) } @@ -231,15 +230,5 @@ impl Drop for Queue { // commands in command_queue. // TODO: maybe we have to do it on every release? let _ = self.flush(true); - - let state = self.state.get_mut().unwrap(); - - unsafe { - // disconnect the channel - ManuallyDrop::drop(&mut state.chan_in); - - // and now explicitly wait on the thread to quit, because it won't happen implicitly. - ManuallyDrop::take(&mut self.thrd).join().unwrap(); - } } }