From 02c9644736bdc45690a35fd4049c4f78bb9e787b Mon Sep 17 00:00:00 2001 From: uncor3 Date: Mon, 8 Jun 2026 20:45:04 +0000 Subject: [PATCH] feat(image_loader): derive QtThreading --- src/image_loader.rs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/image_loader.rs b/src/image_loader.rs index 12ad773..fa9821d 100644 --- a/src/image_loader.rs +++ b/src/image_loader.rs @@ -18,8 +18,10 @@ use tokio::{ io::AsyncReadExt, sync::{Notify, Semaphore}, }; +use macros::QtThreading; -#[derive(Default, QObject)] + +#[derive(Default, QObject, QtThreading)] pub struct ImageLoader { base: qt_base_class!(trait QObject), @@ -31,14 +33,6 @@ static SCHEDULER: Lazy> = Lazy::new(|| Arc::new(Scheduler::new()) static WORKER_STARTED: AtomicBool = AtomicBool::new(false); static NEXT_SEQ: AtomicU64 = AtomicU64::new(0); -impl QtThreading for ImageLoader { - fn qt_thread(&self) -> crate::qt_threading::QtThread - where - Self: Sized, - { - QtThread::new(self) - } -} #[derive(Clone, Debug, Hash, Eq, PartialEq)] struct JobKey { udid: String, @@ -103,7 +97,7 @@ fn ensure_worker_started() { .compare_exchange(false, true, Ordering::AcqRel, Ordering::Acquire) .is_ok() { - // FIXME: use std::thread ? + // TODO: use std::thread ? RUNTIME.spawn(async { loop { let Some((key, payload)) = SCHEDULER.pop_next() else { @@ -220,6 +214,7 @@ async fn file_to_image(afc: &mut AfcClient, path: &str) -> QImage { } }; + // FIXME: optimize chunk let mut chunk = vec![0u8; 8192]; loop {