aura-gui 0.3.0

UI nativa acelerada por GPU para escritorio, Android e iOS, en un solo crate: estilo tipo Tailwind, componentes, sombras, animaciones y agentes de IA. Reposo a cero. Licencia AGPL-3.0 o comercial.
//! Despertar el bucle: los hilos de trabajo dejan su resultado en el inbox y avisan con un evento de usuario;
//! el bucle duerme (`ControlFlow::Wait`) mientras nadie avise.

use crate::core::Waker;
use winit::event_loop::EventLoopProxy;
use winit::window::WindowId;

/// Eventos de usuario del bucle: resultados de hilos de trabajo y avisos de accesibilidad.
#[derive(Debug)]
pub enum Wake {
    /// Un hilo dejó resultados en el inbox de esa ventana.
    Inbox(WindowId),
    Access(accesskit_winit::Event),
}

impl From<accesskit_winit::Event> for Wake {
    fn from(event: accesskit_winit::Event) -> Self {
        Wake::Access(event)
    }
}

pub struct ProxyWaker {
    pub proxy: EventLoopProxy<Wake>,
    pub window: WindowId,
}

impl Waker for ProxyWaker {
    fn wake(&self) {
        // Solo falla si el bucle ya terminó; entonces no hay nada que despertar.
        self.proxy.send_event(Wake::Inbox(self.window)).ok();
    }
}