Added timer

main
isark 2 years ago
parent 831b698c6f
commit 54d0065b9d

@ -2,7 +2,7 @@ use windows::Win32::Graphics::Gdi::ClientToScreen;
use windows::Win32::System::Com::VT_I4;
use windows::Win32::System::Ole::{VariantClear, VariantInit};
use windows::Win32::UI::Accessibility::{
AccessibleObjectFromEvent, AccessibleObjectFromWindow, IAccessible,
AccessibleObjectFromEvent, IAccessible,
};
use std::sync::atomic::AtomicPtr;
@ -16,7 +16,7 @@ use windows::Win32::UI::WindowsAndMessaging::{
GetWindowThreadProcessId, IsHungAppWindow, PostMessageW, RegisterWindowMessageW,
TranslateMessage, CHILDID_SELF, EVENT_OBJECT_DESTROY, EVENT_OBJECT_LOCATIONCHANGE,
EVENT_OBJECT_NAMECHANGE, EVENT_SYSTEM_FOREGROUND, EVENT_SYSTEM_MINIMIZEEND, MSG,
OBJECT_IDENTIFIER, OBJID_WINDOW, STATE_SYSTEM_FOCUSED, WINEVENT_OUTOFCONTEXT,
OBJECT_IDENTIFIER, OBJID_WINDOW, STATE_SYSTEM_FOCUSED, WINEVENT_OUTOFCONTEXT, SetTimer,
};
use windows::Win32::{
Foundation::HWND,
@ -370,6 +370,7 @@ impl Runtime {
self.target.destroyed_change.bind();
let has_access = self.has_uipi_access();
if let Some(bounds) = self.get_content_bounds() {
self.underlay_tx
.send(UnderlayEvent::Attach { bounds, has_access })
@ -380,6 +381,7 @@ impl Runtime {
} else {
self.target.hwnd = Default::default();
}
}
fn msaa_check_window_focused_state(&mut self, hwnd: HWND) -> bool {
@ -461,6 +463,8 @@ impl Runtime {
}
}
const OW_FOREGROUND_TIMER_MS: u32 = 83;
pub fn init(
window_title: String,
tx: std::sync::mpsc::Sender<crate::UnderlayEvent>,
@ -493,6 +497,7 @@ pub fn init(
};
runtime.foreground_change.bind();
runtime.unminimize_change.bind();
unsafe { SetTimer(HWND::default(), 0, OW_FOREGROUND_TIMER_MS, Some(global_timer_hook)) };
GLOBAL_CALLBACK_SENDER.store(
Box::into_raw(Box::new(Arc::new(Mutex::new(runtime)))),

Loading…
Cancel
Save