winit/src/platform_impl/apple/appkit/window.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

390 lines
12 KiB
Rust
Raw Normal View History

#![allow(clippy::unnecessary_cast)]
use std::sync::Arc;
use dispatch2::MainThreadBound;
use dpi::{Position, Size};
use objc2::rc::{autoreleasepool, Retained};
use objc2::{define_class, MainThreadMarker, Message};
use objc2_app_kit::{NSPanel, NSResponder, NSWindow};
use objc2_foundation::NSObject;
use winit_core::cursor::Cursor;
use winit_core::error::RequestError;
use winit_core::icon::Icon;
use winit_core::monitor::{Fullscreen, MonitorHandle as CoreMonitorHandle};
use winit_core::window::{
ImePurpose, Theme, UserAttentionType, Window as CoreWindow, WindowAttributes, WindowButtons,
WindowId, WindowLevel,
};
use super::event_loop::ActiveEventLoop;
use super::window_delegate::WindowDelegate;
#[derive(Debug)]
pub(crate) struct Window {
window: MainThreadBound<Retained<NSWindow>>,
/// The window only keeps a weak reference to this, so we must keep it around here.
delegate: MainThreadBound<Retained<WindowDelegate>>,
}
impl Window {
pub(crate) fn new(
window_target: &ActiveEventLoop,
attributes: WindowAttributes,
) -> Result<Self, RequestError> {
let mtm = window_target.mtm;
let delegate =
autoreleasepool(|_| WindowDelegate::new(&window_target.app_state, attributes, mtm))?;
Ok(Window {
window: MainThreadBound::new(delegate.window().retain(), mtm),
delegate: MainThreadBound::new(delegate, mtm),
})
}
pub(crate) fn maybe_wait_on_main<R: Send>(
&self,
f: impl FnOnce(&WindowDelegate) -> R + Send,
) -> R {
self.delegate.get_on_main(|delegate| f(delegate))
}
#[inline]
pub(crate) fn raw_window_handle_rwh_06(
&self,
) -> Result<rwh_06::RawWindowHandle, rwh_06::HandleError> {
if let Some(mtm) = MainThreadMarker::new() {
Ok(self.delegate.get(mtm).raw_window_handle_rwh_06())
} else {
Err(rwh_06::HandleError::Unavailable)
}
}
#[inline]
pub(crate) fn raw_display_handle_rwh_06(
&self,
) -> Result<rwh_06::RawDisplayHandle, rwh_06::HandleError> {
Ok(rwh_06::RawDisplayHandle::AppKit(rwh_06::AppKitDisplayHandle::new()))
}
}
impl Drop for Window {
fn drop(&mut self) {
// Restore the video mode.
if matches!(self.fullscreen(), Some(Fullscreen::Exclusive(_, _))) {
self.set_fullscreen(None);
}
self.window.get_on_main(|window| autoreleasepool(|_| window.close()))
}
}
impl rwh_06::HasDisplayHandle for Window {
fn display_handle(&self) -> Result<rwh_06::DisplayHandle<'_>, rwh_06::HandleError> {
let raw = self.raw_display_handle_rwh_06()?;
unsafe { Ok(rwh_06::DisplayHandle::borrow_raw(raw)) }
}
}
impl rwh_06::HasWindowHandle for Window {
fn window_handle(&self) -> Result<rwh_06::WindowHandle<'_>, rwh_06::HandleError> {
let raw = self.raw_window_handle_rwh_06()?;
unsafe { Ok(rwh_06::WindowHandle::borrow_raw(raw)) }
}
}
impl CoreWindow for Window {
fn id(&self) -> winit_core::window::WindowId {
self.maybe_wait_on_main(|delegate| delegate.id())
}
fn scale_factor(&self) -> f64 {
self.maybe_wait_on_main(|delegate| delegate.scale_factor())
}
fn request_redraw(&self) {
self.maybe_wait_on_main(|delegate| delegate.request_redraw());
}
fn pre_present_notify(&self) {
self.maybe_wait_on_main(|delegate| delegate.pre_present_notify());
}
fn reset_dead_keys(&self) {
self.maybe_wait_on_main(|delegate| delegate.reset_dead_keys());
}
fn surface_position(&self) -> dpi::PhysicalPosition<i32> {
self.maybe_wait_on_main(|delegate| delegate.surface_position())
}
fn outer_position(&self) -> Result<dpi::PhysicalPosition<i32>, RequestError> {
self.maybe_wait_on_main(|delegate| delegate.outer_position())
}
fn set_outer_position(&self, position: Position) {
self.maybe_wait_on_main(|delegate| delegate.set_outer_position(position));
}
fn surface_size(&self) -> dpi::PhysicalSize<u32> {
self.maybe_wait_on_main(|delegate| delegate.surface_size())
}
fn request_surface_size(&self, size: Size) -> Option<dpi::PhysicalSize<u32>> {
self.maybe_wait_on_main(|delegate| delegate.request_surface_size(size))
}
fn outer_size(&self) -> dpi::PhysicalSize<u32> {
self.maybe_wait_on_main(|delegate| delegate.outer_size())
}
fn safe_area(&self) -> dpi::PhysicalInsets<u32> {
self.maybe_wait_on_main(|delegate| delegate.safe_area())
}
fn set_min_surface_size(&self, min_size: Option<Size>) {
self.maybe_wait_on_main(|delegate| delegate.set_min_surface_size(min_size))
}
fn set_max_surface_size(&self, max_size: Option<Size>) {
self.maybe_wait_on_main(|delegate| delegate.set_max_surface_size(max_size));
}
fn surface_resize_increments(&self) -> Option<dpi::PhysicalSize<u32>> {
self.maybe_wait_on_main(|delegate| delegate.surface_resize_increments())
}
fn set_surface_resize_increments(&self, increments: Option<Size>) {
self.maybe_wait_on_main(|delegate| delegate.set_surface_resize_increments(increments));
}
fn set_title(&self, title: &str) {
self.maybe_wait_on_main(|delegate| delegate.set_title(title));
}
fn set_transparent(&self, transparent: bool) {
self.maybe_wait_on_main(|delegate| delegate.set_transparent(transparent));
}
fn set_blur(&self, blur: bool) {
self.maybe_wait_on_main(|delegate| delegate.set_blur(blur));
}
fn set_visible(&self, visible: bool) {
self.maybe_wait_on_main(|delegate| delegate.set_visible(visible));
}
fn is_visible(&self) -> Option<bool> {
self.maybe_wait_on_main(|delegate| delegate.is_visible())
}
fn set_resizable(&self, resizable: bool) {
self.maybe_wait_on_main(|delegate| delegate.set_resizable(resizable))
}
fn is_resizable(&self) -> bool {
self.maybe_wait_on_main(|delegate| delegate.is_resizable())
}
fn set_enabled_buttons(&self, buttons: WindowButtons) {
self.maybe_wait_on_main(|delegate| delegate.set_enabled_buttons(buttons))
}
fn enabled_buttons(&self) -> WindowButtons {
self.maybe_wait_on_main(|delegate| delegate.enabled_buttons())
}
fn set_minimized(&self, minimized: bool) {
self.maybe_wait_on_main(|delegate| delegate.set_minimized(minimized));
}
fn is_minimized(&self) -> Option<bool> {
self.maybe_wait_on_main(|delegate| delegate.is_minimized())
}
fn set_maximized(&self, maximized: bool) {
self.maybe_wait_on_main(|delegate| delegate.set_maximized(maximized));
}
fn is_maximized(&self) -> bool {
self.maybe_wait_on_main(|delegate| delegate.is_maximized())
}
fn set_fullscreen(&self, fullscreen: Option<Fullscreen>) {
self.maybe_wait_on_main(|delegate| delegate.set_fullscreen(fullscreen))
}
fn fullscreen(&self) -> Option<Fullscreen> {
self.maybe_wait_on_main(|delegate| delegate.fullscreen())
}
fn set_decorations(&self, decorations: bool) {
self.maybe_wait_on_main(|delegate| delegate.set_decorations(decorations));
}
fn is_decorated(&self) -> bool {
self.maybe_wait_on_main(|delegate| delegate.is_decorated())
}
fn set_window_level(&self, level: WindowLevel) {
self.maybe_wait_on_main(|delegate| delegate.set_window_level(level));
}
fn set_window_icon(&self, window_icon: Option<Icon>) {
self.maybe_wait_on_main(|delegate| delegate.set_window_icon(window_icon));
}
fn set_ime_cursor_area(&self, position: Position, size: Size) {
self.maybe_wait_on_main(|delegate| delegate.set_ime_cursor_area(position, size));
}
fn set_ime_allowed(&self, allowed: bool) {
self.maybe_wait_on_main(|delegate| delegate.set_ime_allowed(allowed));
}
fn set_ime_purpose(&self, purpose: ImePurpose) {
self.maybe_wait_on_main(|delegate| delegate.set_ime_purpose(purpose));
}
fn focus_window(&self) {
self.maybe_wait_on_main(|delegate| delegate.focus_window());
}
fn has_focus(&self) -> bool {
self.maybe_wait_on_main(|delegate| delegate.has_focus())
}
fn request_user_attention(&self, request_type: Option<UserAttentionType>) {
self.maybe_wait_on_main(|delegate| delegate.request_user_attention(request_type));
}
fn set_theme(&self, theme: Option<Theme>) {
self.maybe_wait_on_main(|delegate| delegate.set_theme(theme));
}
fn theme(&self) -> Option<Theme> {
self.maybe_wait_on_main(|delegate| delegate.theme())
}
fn set_content_protected(&self, protected: bool) {
self.maybe_wait_on_main(|delegate| delegate.set_content_protected(protected));
}
fn title(&self) -> String {
self.maybe_wait_on_main(|delegate| delegate.title())
}
fn set_cursor(&self, cursor: Cursor) {
self.maybe_wait_on_main(|delegate| delegate.set_cursor(cursor));
}
fn set_cursor_position(&self, position: Position) -> Result<(), RequestError> {
self.maybe_wait_on_main(|delegate| delegate.set_cursor_position(position))
}
fn set_cursor_grab(
&self,
mode: winit_core::window::CursorGrabMode,
) -> Result<(), RequestError> {
self.maybe_wait_on_main(|delegate| delegate.set_cursor_grab(mode))
}
fn set_cursor_visible(&self, visible: bool) {
self.maybe_wait_on_main(|delegate| delegate.set_cursor_visible(visible))
}
fn drag_window(&self) -> Result<(), RequestError> {
self.maybe_wait_on_main(|delegate| delegate.drag_window())
}
fn drag_resize_window(
&self,
direction: winit_core::window::ResizeDirection,
) -> Result<(), RequestError> {
Ok(self.maybe_wait_on_main(|delegate| delegate.drag_resize_window(direction))?)
}
fn show_window_menu(&self, position: Position) {
self.maybe_wait_on_main(|delegate| delegate.show_window_menu(position))
}
fn set_cursor_hittest(&self, hittest: bool) -> Result<(), RequestError> {
self.maybe_wait_on_main(|delegate| delegate.set_cursor_hittest(hittest));
Ok(())
}
fn current_monitor(&self) -> Option<CoreMonitorHandle> {
self.maybe_wait_on_main(|delegate| {
delegate.current_monitor().map(|monitor| CoreMonitorHandle(Arc::new(monitor)))
})
}
fn available_monitors(&self) -> Box<dyn Iterator<Item = CoreMonitorHandle>> {
self.maybe_wait_on_main(|delegate| {
Box::new(
delegate
.available_monitors()
.into_iter()
.map(|monitor| CoreMonitorHandle(Arc::new(monitor))),
)
})
}
fn primary_monitor(&self) -> Option<CoreMonitorHandle> {
self.maybe_wait_on_main(|delegate| {
delegate.primary_monitor().map(|monitor| CoreMonitorHandle(Arc::new(monitor)))
})
}
fn rwh_06_display_handle(&self) -> &dyn rwh_06::HasDisplayHandle {
self
}
fn rwh_06_window_handle(&self) -> &dyn rwh_06::HasWindowHandle {
self
}
}
define_class!(
#[unsafe(super(NSWindow, NSResponder, NSObject))]
#[name = "WinitWindow"]
#[derive(Debug)]
pub struct WinitWindow;
/// This documentation attribute makes rustfmt work for some reason?
impl WinitWindow {
#[unsafe(method(canBecomeMainWindow))]
fn can_become_main_window(&self) -> bool {
trace_scope!("canBecomeMainWindow");
true
}
#[unsafe(method(canBecomeKeyWindow))]
fn can_become_key_window(&self) -> bool {
trace_scope!("canBecomeKeyWindow");
true
}
}
);
define_class!(
#[unsafe(super(NSPanel, NSWindow, NSResponder, NSObject))]
#[name = "WinitPanel"]
#[derive(Debug)]
pub struct WinitPanel;
/// This documentation attribute makes rustfmt work for some reason?
impl WinitPanel {
// although NSPanel can become key window
// it doesn't if window doesn't have NSWindowStyleMask::Titled
#[unsafe(method(canBecomeKeyWindow))]
fn can_become_key_window(&self) -> bool {
trace_scope!("canBecomeKeyWindow");
true
}
}
);
pub(super) fn window_id(window: &NSWindow) -> WindowId {
WindowId::from_raw(window as *const _ as usize)
Squashed commit of the following: (#853) commit fa95f204d3c10ceca70e794870657a0f33349761 Author: Hal Gentz <zegentzy@protonmail.com> Date: Sun Apr 28 00:14:01 2019 -0600 xrender Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit b62cee51c7b22f6f150bfe04f9b28f024e641323 Merge: 3f021ea7 a6551f46 Author: Hal Gentz <zegentzy@protonmail.com> Date: Thu Apr 25 18:13:43 2019 -0600 Merge branch 'macos-gentz' of github.com:ZeGentzy/winit into macos-gentz commit 3f021ea7f7ac6bc2a697a5b6e4e6424e838a2139 Author: Hal Gentz <zegentzy@protonmail.com> Date: Thu Apr 25 18:04:02 2019 -0600 Get rid of warnings. Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit a6551f4607ea0bc26df8716dee8115371ef367db Author: Hal Gentz <zegentzy@protonmail.com> Date: Thu Apr 25 07:40:56 2019 -0600 Fix example Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit cbfda6c57e9740b49d2b496bda43197f611cb48c Author: Hal Gentz <zegentzy@protonmail.com> Date: Wed Apr 24 23:47:46 2019 -0600 Fixes Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit 86bc86f3d3add4a6125aa9b2eca79061c0dfcd91 Author: Hal Gentz <zegentzy@protonmail.com> Date: Wed Apr 24 23:39:19 2019 -0600 Backport https://github.com/rust-windowing/winit/commit/9a23ec3c373d096e5e9dd0cc0a23f7baf0b64135#diff-1d95fe39cdbaa708c975380a16c314cb Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit 742a688efe2f0eeacc2ffbf49b1157c4aaffccbd Author: Hal Gentz <zegentzy@protonmail.com> Date: Wed Apr 24 23:09:14 2019 -0600 Backports https://github.com/rust-windowing/winit/commit/45a428141329377a1669698e4ca6561834c0dbcc#diff-1d95fe39cdbaa708c975380a16c314cb Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit 6c81f2a517d4e2d5ba2ff3eddca030bce972cb2a Author: Hal Gentz <zegentzy@protonmail.com> Date: Wed Apr 24 23:05:57 2019 -0600 Francesca's macos changes Also backports https://github.com/rust-windowing/winit/commit/bfbcab3a010667e74fa3cc07ac85bd4c85491e65#diff-1d95fe39cdbaa708c975380a16c314cb commit 7c2e1300c26a0634ad505ce72b90eb6dc2fdcac7 Author: Francesca Plebani <franplebani@gmail.com> Date: Wed Apr 24 20:58:26 2019 -0600 Squashed commit of the following: commit 5f4aa9f01a719eef98c6d894801c20ee8f96d30f Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 21 17:14:14 2018 -0500 Protect against reentrancy (messily) commit b75073a5b2a8d65ab8806a00ffee390752255c8c Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 21 15:15:27 2018 -0500 Send resize events immediately commit 8e9fc01bd6b404f59488b130413f48e4e5f89b0d Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 21 16:07:43 2018 -0500 Don't use struct for window delegate commit c6853b0c4a8fe357f463604bb879dc1be424860e Author: Francesca Plebani <franplebani@gmail.com> Date: Wed Dec 19 21:17:48 2018 -0500 Split up util commit 262c46b148413130fa239099f1151c1f1bd5c13c Author: Francesca Plebani <franplebani@gmail.com> Date: Wed Dec 19 20:55:00 2018 -0500 Use dispatch crate commit 63152c2f475794d1a36a5b3687c777664d7d5613 Author: Francesca Plebani <franplebani@gmail.com> Date: Wed Dec 19 20:29:13 2018 -0500 RedrawRequested commit 27e475c7c78b059fd9b5e8350cd26756eecdfc94 Author: Francesca Plebani <franplebani@gmail.com> Date: Wed Dec 19 19:24:44 2018 -0500 User events commit 157418d7dedace9c571e977d98ea92464c3188b2 Author: Francesca Plebani <franplebani@gmail.com> Date: Tue Dec 18 22:38:05 2018 -0500 Moved out cursor loading commit b4925641c973979a38743202b4269efe09ac43b4 Author: Francesca Plebani <franplebani@gmail.com> Date: Tue Dec 18 21:32:12 2018 -0500 Fixed a bunch of threading issues commit 4aef63dfb78dfaf38c83cb0e88d4ea9d8d0578a6 Author: Francesca Plebani <franplebani@gmail.com> Date: Mon Dec 17 13:54:59 2018 -0500 Wait works commit 72ed426c695df5dc410902263bd74188059b8ddd Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 14 20:49:10 2018 -0500 Fixed drag and dropg commit 658209f4a20acd536218f41a01fb8cbbebc705e0 Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 14 20:42:42 2018 -0500 Made mutexes finer for less deadlock risk commit 8e6b9866084690da900c4d058e412cab8ebb30c4 Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 14 16:45:06 2018 -0500 Dump (encapsulate) everything into AppState commit d2dc83df15939d89301e2cff0ffa2d98c48b406f Author: Francesca Plebani <franplebani@gmail.com> Date: Thu Dec 13 17:36:47 2018 -0500 All window events work! commit 7c7fcc98872b3c35bd7767b5c6235a74bc105e06 Author: Francesca Plebani <franplebani@gmail.com> Date: Wed Dec 12 17:11:09 2018 -0500 Very rough usage of CFRunLoop commit 3c7a52ff4df683b5b7e1751e4051ec445a818774 Author: Francesca Plebani <franplebani@gmail.com> Date: Tue Dec 11 15:45:23 2018 -0500 Fixed deadlocks commit b74c7fe1bcd173e9b0c0e004956c257e805bc2a2 Author: Francesca Plebani <franplebani@gmail.com> Date: Mon Dec 10 18:59:46 2018 -0500 Fix keyDown deadlock commit 3798f9c1a4bef2a3d1552f846b26efc31b1bbb6c Author: Francesca Plebani <franplebani@gmail.com> Date: Mon Dec 10 18:44:40 2018 -0500 It builds! commit 8c8620214357714c5cd0b3beefda6704512e3f64 Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 7 21:09:55 2018 -0500 Horribly broken so far commit 8269ed2a9270e5ec5b14f80fd21d1e0e6f51be29 Author: Osspial <osspial@gmail.com> Date: Mon Nov 19 23:51:20 2018 -0500 Fix crash with runner refcell not getting dropped commit 54ce6a21a0722e408ae49c74f5008005fc1e4cbf Author: Osspial <osspial@gmail.com> Date: Sun Nov 18 19:12:45 2018 -0500 Fix buffered events not getting dispatched commit 2c18b804df66f49f93cfe722a679d6c5e01d8cb1 Author: Osspial <osspial@gmail.com> Date: Sun Nov 18 18:51:24 2018 -0500 Fix thread executor not executing closure when called from non-loop thread commit 5a3a5e2293cec3e566c4aac344ae7eaa343608b5 Author: Osspial <osspial@gmail.com> Date: Thu Nov 15 22:43:59 2018 -0500 Fix some deadlocks that could occur when changing window state commit 2a3cefd8c5df1c06127b05651cbdf5e3d9e3a6d3 Author: Osspial <osspial@gmail.com> Date: Thu Nov 15 16:45:17 2018 -0500 Document and implement Debug for EventLoopWindowTarget commit fa46825a289ca0587dc97f9c00dea5516fb4925a Author: Osspial <osspial@gmail.com> Date: Thu Nov 15 16:40:48 2018 -0500 Replace &EventLoop in callback with &EventLoopWindowTarget commit 9f36a7a68e1dc379cf9091213dae2c3586d3e473 Author: Osspial <osspial@gmail.com> Date: Wed Nov 14 21:28:38 2018 -0500 Fix freeze when setting decorations commit d9c3daca9b459e02ef614568fe803a723965fe8d Author: Osspial <osspial@gmail.com> Date: Fri Nov 9 20:41:15 2018 -0500 Fix 1.24.1 build commit 5289d22372046bac403a279c3641737c0cfc46d2 Author: Osspial <osspial@gmail.com> Date: Fri Nov 9 00:00:27 2018 -0500 Remove serde implementations from ControlFlow commit 92ac3d6ac7915923c22c380cc3a74c5f3830708e Author: Osspial <osspial@gmail.com> Date: Thu Nov 8 23:46:41 2018 -0500 Remove crossbeam dependency and make drop events work again commit 8299eb2f03773a34079c61fc8adb51405aafc467 Author: Osspial <osspial@gmail.com> Date: Thu Sep 13 22:39:40 2018 -0400 Fix crash when running in release mode commit bb6ab1bb6e9595e90f1915fdde7e23904f2ba594 Author: Osspial <osspial@gmail.com> Date: Sun Sep 9 14:28:16 2018 -0400 Fix unreachable panic after setting ControlFlow to Poll during some RedrawRequested events. commit 5068ff4ee152bfe93c9190235f02d001202feb88 Author: Osspial <osspial@gmail.com> Date: Sun Sep 9 14:14:28 2018 -0400 Improve clarity/fix typos in docs commit 8ed575ff4a4f0961bb2e784bda1ae109c6bd37b7 Author: Osspial <osspial@gmail.com> Date: Sun Sep 9 00:19:53 2018 -0400 Update send test and errors that broke some examples/APIs commit bf7bfa82ebb5d6ae110ce0492c124ef462945f85 Author: Osspial <osspial@gmail.com> Date: Wed Sep 5 22:36:05 2018 -0400 Fix resize lag when waiting in some situations commit 70722cc4c322e3e599b3a03bce5058a5d433970b Author: Osspial <osspial@gmail.com> Date: Wed Sep 5 19:58:52 2018 -1100 When SendEvent is called during event closure, buffer events commit 53370924b25da15ddd172173150b228065324864 Author: Osspial <osspial@gmail.com> Date: Sun Aug 26 21:55:51 2018 -0400 Improve WaitUntil timer precision commit a654400e730400c2e3584be2f47153043b5b7efe Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 21:06:19 2018 -0400 Add CHANGELOG entry commit deb7d379b7c04e61d6d50ff655eccac0ad692e44 Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 20:19:56 2018 -0400 Rename MonitorId to MonitorHandle commit 8d8d9b7cd1386c99c40023d86e17d10c3fd6652f Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 20:16:52 2018 -0400 Change instances of "events_loop" to "event_loop" commit 0f344087630ae252c9c8f453864e684a1a5405b1 Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 20:13:53 2018 -0400 Improve docs for run and run_return commit fba41f7a7ed8585cbb658b6d0b2f34f75482cb3d Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 19:09:53 2018 -0400 Small changes to examples commit 42e8a0d2cf77af79da082fff7cd29cc8f52d99df Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 19:09:19 2018 -0400 Improve documentation commit 4377680a44ea86dad52954f90bc7d8ad7ed0b4bf Author: Osspial <osspial@gmail.com> Date: Wed Aug 22 23:01:36 2018 -0400 Re-organize into module structure commit f20fac99f6ac57c51603a92d792fd4f665feb7f6 Author: Osspial <osspial@gmail.com> Date: Wed Aug 22 22:07:39 2018 -0400 Add platform::desktop module with EventLoopExt::run_return commit dad24d086aaaff60e557efc4f41d1ae7e3c71738 Author: Osspial <osspial@gmail.com> Date: Wed Aug 22 18:03:41 2018 -0400 Rename os to platform, add Ext trait postfixes commit 7df59c60a06008226f6455619e7242ed0156ed8d Author: Osspial <osspial@gmail.com> Date: Wed Aug 22 17:59:36 2018 -0400 Rename platform to platform_impl commit 99c0f84a9fc771c9c96099232de3716ddf27ca80 Author: Osspial <osspial@gmail.com> Date: Wed Aug 22 17:55:27 2018 -0400 Add request_redraw commit a0fef1a5fad9b5d5da59fff191c7d9c398ea9e01 Author: Osspial <osspial@gmail.com> Date: Mon Aug 20 01:47:11 2018 -0400 Fully invert windows control flow so win32 calls into winit's callback commit 2c607ff87f8fbcad8aa9dc3783b3298c014dd177 Author: Osspial <osspial@gmail.com> Date: Sun Aug 19 13:44:22 2018 -0400 Add ability to send custom user events commit a0b2bb36953f018ff782cef8fc86c6db9343095d Author: Osspial <osspial@gmail.com> Date: Fri Aug 17 17:49:46 2018 -0400 Add StartCause::Init support, timer example commit 02f922f003f56215b92b8feeb9148ad2dd181fc2 Author: Osspial <osspial@gmail.com> Date: Fri Aug 17 17:31:04 2018 -0400 Implement new ControlFlow and associated events commit 8b8a7675ec67e15a0f8f69db0bdeb79bee0ac20d Author: Osspial <osspial@gmail.com> Date: Fri Jul 13 01:48:26 2018 -0400 Replace windows Mutex with parking_lot Mutex commit 9feada206f6b9fb1e9da118be6b77dfc217ace8d Author: Osspial <osspial@gmail.com> Date: Fri Jul 13 01:39:53 2018 -0400 Update run_forever to hijack thread commit 2e83bac99cc264cd2723cb182feea84a0a15e08d Author: Osspial <osspial@gmail.com> Date: Thu Jul 12 23:43:58 2018 -0400 Remove second thread from win32 backend commit 64b8a9c6a50362d10c074077a1e37b057f3e3c81 Author: Osspial <osspial@gmail.com> Date: Thu Jul 12 22:13:07 2018 -0400 Rename WindowEvent::Refresh to WindowEvent::Redraw commit 529c08555fd0b709a23d486211d28fbd0980fc94 Author: Osspial <osspial@gmail.com> Date: Thu Jul 12 22:04:38 2018 -0400 Rename EventsLoop and associated types to EventLoop Signed-off-by: Hal Gentz <zegentzy@protonmail.com> Co-authored-by: Hal Gentz <zegentzy@protonmail.com> commit cfb929ba0a9e787f8bb1a6dae4e05e4c7776bc97 Author: Hal Gentz <zegentzy@protonmail.com> Date: Thu Apr 25 07:40:56 2019 -0600 Fix example Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit 68d3317ff58381d55f5f9bd3db0860d66544fe12 Author: Hal Gentz <zegentzy@protonmail.com> Date: Wed Apr 24 23:47:46 2019 -0600 Fixes Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit 02d1aae4db27df054b703aa935ca118f31e17123 Author: Hal Gentz <zegentzy@protonmail.com> Date: Wed Apr 24 23:39:19 2019 -0600 Backport https://github.com/rust-windowing/winit/commit/9a23ec3c373d096e5e9dd0cc0a23f7baf0b64135#diff-1d95fe39cdbaa708c975380a16c314cb Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit dd9de5a6d444a9ab17afe470f4cf2a57e3ed76ae Author: Hal Gentz <zegentzy@protonmail.com> Date: Wed Apr 24 23:09:14 2019 -0600 Backports https://github.com/rust-windowing/winit/commit/45a428141329377a1669698e4ca6561834c0dbcc#diff-1d95fe39cdbaa708c975380a16c314cb Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit 533e2adc1d1e417742475786635848b1620e476c Author: Hal Gentz <zegentzy@protonmail.com> Date: Wed Apr 24 23:05:57 2019 -0600 Francesca's macos changes Also backports https://github.com/rust-windowing/winit/commit/bfbcab3a010667e74fa3cc07ac85bd4c85491e65#diff-1d95fe39cdbaa708c975380a16c314cb commit 73b52221080bd3a881ae3a58c2dbb19bc8d954c6 Author: Hal Gentz <zegentzy@protonmail.com> Date: Wed Apr 24 20:58:26 2019 -0600 Squashed commit of the following: commit 5f4aa9f01a719eef98c6d894801c20ee8f96d30f Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 21 17:14:14 2018 -0500 Protect against reentrancy (messily) commit b75073a5b2a8d65ab8806a00ffee390752255c8c Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 21 15:15:27 2018 -0500 Send resize events immediately commit 8e9fc01bd6b404f59488b130413f48e4e5f89b0d Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 21 16:07:43 2018 -0500 Don't use struct for window delegate commit c6853b0c4a8fe357f463604bb879dc1be424860e Author: Francesca Plebani <franplebani@gmail.com> Date: Wed Dec 19 21:17:48 2018 -0500 Split up util commit 262c46b148413130fa239099f1151c1f1bd5c13c Author: Francesca Plebani <franplebani@gmail.com> Date: Wed Dec 19 20:55:00 2018 -0500 Use dispatch crate commit 63152c2f475794d1a36a5b3687c777664d7d5613 Author: Francesca Plebani <franplebani@gmail.com> Date: Wed Dec 19 20:29:13 2018 -0500 RedrawRequested commit 27e475c7c78b059fd9b5e8350cd26756eecdfc94 Author: Francesca Plebani <franplebani@gmail.com> Date: Wed Dec 19 19:24:44 2018 -0500 User events commit 157418d7dedace9c571e977d98ea92464c3188b2 Author: Francesca Plebani <franplebani@gmail.com> Date: Tue Dec 18 22:38:05 2018 -0500 Moved out cursor loading commit b4925641c973979a38743202b4269efe09ac43b4 Author: Francesca Plebani <franplebani@gmail.com> Date: Tue Dec 18 21:32:12 2018 -0500 Fixed a bunch of threading issues commit 4aef63dfb78dfaf38c83cb0e88d4ea9d8d0578a6 Author: Francesca Plebani <franplebani@gmail.com> Date: Mon Dec 17 13:54:59 2018 -0500 Wait works commit 72ed426c695df5dc410902263bd74188059b8ddd Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 14 20:49:10 2018 -0500 Fixed drag and dropg commit 658209f4a20acd536218f41a01fb8cbbebc705e0 Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 14 20:42:42 2018 -0500 Made mutexes finer for less deadlock risk commit 8e6b9866084690da900c4d058e412cab8ebb30c4 Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 14 16:45:06 2018 -0500 Dump (encapsulate) everything into AppState commit d2dc83df15939d89301e2cff0ffa2d98c48b406f Author: Francesca Plebani <franplebani@gmail.com> Date: Thu Dec 13 17:36:47 2018 -0500 All window events work! commit 7c7fcc98872b3c35bd7767b5c6235a74bc105e06 Author: Francesca Plebani <franplebani@gmail.com> Date: Wed Dec 12 17:11:09 2018 -0500 Very rough usage of CFRunLoop commit 3c7a52ff4df683b5b7e1751e4051ec445a818774 Author: Francesca Plebani <franplebani@gmail.com> Date: Tue Dec 11 15:45:23 2018 -0500 Fixed deadlocks commit b74c7fe1bcd173e9b0c0e004956c257e805bc2a2 Author: Francesca Plebani <franplebani@gmail.com> Date: Mon Dec 10 18:59:46 2018 -0500 Fix keyDown deadlock commit 3798f9c1a4bef2a3d1552f846b26efc31b1bbb6c Author: Francesca Plebani <franplebani@gmail.com> Date: Mon Dec 10 18:44:40 2018 -0500 It builds! commit 8c8620214357714c5cd0b3beefda6704512e3f64 Author: Francesca Plebani <franplebani@gmail.com> Date: Fri Dec 7 21:09:55 2018 -0500 Horribly broken so far commit 8269ed2a9270e5ec5b14f80fd21d1e0e6f51be29 Author: Osspial <osspial@gmail.com> Date: Mon Nov 19 23:51:20 2018 -0500 Fix crash with runner refcell not getting dropped commit 54ce6a21a0722e408ae49c74f5008005fc1e4cbf Author: Osspial <osspial@gmail.com> Date: Sun Nov 18 19:12:45 2018 -0500 Fix buffered events not getting dispatched commit 2c18b804df66f49f93cfe722a679d6c5e01d8cb1 Author: Osspial <osspial@gmail.com> Date: Sun Nov 18 18:51:24 2018 -0500 Fix thread executor not executing closure when called from non-loop thread commit 5a3a5e2293cec3e566c4aac344ae7eaa343608b5 Author: Osspial <osspial@gmail.com> Date: Thu Nov 15 22:43:59 2018 -0500 Fix some deadlocks that could occur when changing window state commit 2a3cefd8c5df1c06127b05651cbdf5e3d9e3a6d3 Author: Osspial <osspial@gmail.com> Date: Thu Nov 15 16:45:17 2018 -0500 Document and implement Debug for EventLoopWindowTarget commit fa46825a289ca0587dc97f9c00dea5516fb4925a Author: Osspial <osspial@gmail.com> Date: Thu Nov 15 16:40:48 2018 -0500 Replace &EventLoop in callback with &EventLoopWindowTarget commit 9f36a7a68e1dc379cf9091213dae2c3586d3e473 Author: Osspial <osspial@gmail.com> Date: Wed Nov 14 21:28:38 2018 -0500 Fix freeze when setting decorations commit d9c3daca9b459e02ef614568fe803a723965fe8d Author: Osspial <osspial@gmail.com> Date: Fri Nov 9 20:41:15 2018 -0500 Fix 1.24.1 build commit 5289d22372046bac403a279c3641737c0cfc46d2 Author: Osspial <osspial@gmail.com> Date: Fri Nov 9 00:00:27 2018 -0500 Remove serde implementations from ControlFlow commit 92ac3d6ac7915923c22c380cc3a74c5f3830708e Author: Osspial <osspial@gmail.com> Date: Thu Nov 8 23:46:41 2018 -0500 Remove crossbeam dependency and make drop events work again commit 8299eb2f03773a34079c61fc8adb51405aafc467 Author: Osspial <osspial@gmail.com> Date: Thu Sep 13 22:39:40 2018 -0400 Fix crash when running in release mode commit bb6ab1bb6e9595e90f1915fdde7e23904f2ba594 Author: Osspial <osspial@gmail.com> Date: Sun Sep 9 14:28:16 2018 -0400 Fix unreachable panic after setting ControlFlow to Poll during some RedrawRequested events. commit 5068ff4ee152bfe93c9190235f02d001202feb88 Author: Osspial <osspial@gmail.com> Date: Sun Sep 9 14:14:28 2018 -0400 Improve clarity/fix typos in docs commit 8ed575ff4a4f0961bb2e784bda1ae109c6bd37b7 Author: Osspial <osspial@gmail.com> Date: Sun Sep 9 00:19:53 2018 -0400 Update send test and errors that broke some examples/APIs commit bf7bfa82ebb5d6ae110ce0492c124ef462945f85 Author: Osspial <osspial@gmail.com> Date: Wed Sep 5 22:36:05 2018 -0400 Fix resize lag when waiting in some situations commit 70722cc4c322e3e599b3a03bce5058a5d433970b Author: Osspial <osspial@gmail.com> Date: Wed Sep 5 19:58:52 2018 -1100 When SendEvent is called during event closure, buffer events commit 53370924b25da15ddd172173150b228065324864 Author: Osspial <osspial@gmail.com> Date: Sun Aug 26 21:55:51 2018 -0400 Improve WaitUntil timer precision commit a654400e730400c2e3584be2f47153043b5b7efe Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 21:06:19 2018 -0400 Add CHANGELOG entry commit deb7d379b7c04e61d6d50ff655eccac0ad692e44 Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 20:19:56 2018 -0400 Rename MonitorId to MonitorHandle commit 8d8d9b7cd1386c99c40023d86e17d10c3fd6652f Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 20:16:52 2018 -0400 Change instances of "events_loop" to "event_loop" commit 0f344087630ae252c9c8f453864e684a1a5405b1 Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 20:13:53 2018 -0400 Improve docs for run and run_return commit fba41f7a7ed8585cbb658b6d0b2f34f75482cb3d Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 19:09:53 2018 -0400 Small changes to examples commit 42e8a0d2cf77af79da082fff7cd29cc8f52d99df Author: Osspial <osspial@gmail.com> Date: Thu Aug 23 19:09:19 2018 -0400 Improve documentation commit 4377680a44ea86dad52954f90bc7d8ad7ed0b4bf Author: Osspial <osspial@gmail.com> Date: Wed Aug 22 23:01:36 2018 -0400 Re-organize into module structure commit f20fac99f6ac57c51603a92d792fd4f665feb7f6 Author: Osspial <osspial@gmail.com> Date: Wed Aug 22 22:07:39 2018 -0400 Add platform::desktop module with EventLoopExt::run_return commit dad24d086aaaff60e557efc4f41d1ae7e3c71738 Author: Osspial <osspial@gmail.com> Date: Wed Aug 22 18:03:41 2018 -0400 Rename os to platform, add Ext trait postfixes commit 7df59c60a06008226f6455619e7242ed0156ed8d Author: Osspial <osspial@gmail.com> Date: Wed Aug 22 17:59:36 2018 -0400 Rename platform to platform_impl commit 99c0f84a9fc771c9c96099232de3716ddf27ca80 Author: Osspial <osspial@gmail.com> Date: Wed Aug 22 17:55:27 2018 -0400 Add request_redraw commit a0fef1a5fad9b5d5da59fff191c7d9c398ea9e01 Author: Osspial <osspial@gmail.com> Date: Mon Aug 20 01:47:11 2018 -0400 Fully invert windows control flow so win32 calls into winit's callback commit 2c607ff87f8fbcad8aa9dc3783b3298c014dd177 Author: Osspial <osspial@gmail.com> Date: Sun Aug 19 13:44:22 2018 -0400 Add ability to send custom user events commit a0b2bb36953f018ff782cef8fc86c6db9343095d Author: Osspial <osspial@gmail.com> Date: Fri Aug 17 17:49:46 2018 -0400 Add StartCause::Init support, timer example commit 02f922f003f56215b92b8feeb9148ad2dd181fc2 Author: Osspial <osspial@gmail.com> Date: Fri Aug 17 17:31:04 2018 -0400 Implement new ControlFlow and associated events commit 8b8a7675ec67e15a0f8f69db0bdeb79bee0ac20d Author: Osspial <osspial@gmail.com> Date: Fri Jul 13 01:48:26 2018 -0400 Replace windows Mutex with parking_lot Mutex commit 9feada206f6b9fb1e9da118be6b77dfc217ace8d Author: Osspial <osspial@gmail.com> Date: Fri Jul 13 01:39:53 2018 -0400 Update run_forever to hijack thread commit 2e83bac99cc264cd2723cb182feea84a0a15e08d Author: Osspial <osspial@gmail.com> Date: Thu Jul 12 23:43:58 2018 -0400 Remove second thread from win32 backend commit 64b8a9c6a50362d10c074077a1e37b057f3e3c81 Author: Osspial <osspial@gmail.com> Date: Thu Jul 12 22:13:07 2018 -0400 Rename WindowEvent::Refresh to WindowEvent::Redraw commit 529c08555fd0b709a23d486211d28fbd0980fc94 Author: Osspial <osspial@gmail.com> Date: Thu Jul 12 22:04:38 2018 -0400 Rename EventsLoop and associated types to EventLoop Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit ab1dfaaaa53a3acd206bf494ac90e3fe130dc609 Author: Hal Gentz <zegentzy@protonmail.com> Date: Tue Apr 23 21:52:17 2019 -0600 Minor Signed-off-by: Hal Gentz <zegentzy@protonmail.com> commit 7933209d603e0794adb806d9cf53507f1c2f1d3c Author: Victor Berger <victor.berger@m4x.org> Date: Thu Apr 18 09:10:41 2019 +0200 wayland/x11: Make ControlFlow::Exit sticky commit 8355a7513e299ffba21062c8518bcf4bdb735ba9 Author: Victor Berger <victor.berger@m4x.org> Date: Tue Apr 16 12:21:33 2019 +0200 x11: Implement run_return using calloop commit f64edb60cc85fcd98a1cec955ba9980f617fdd73 Author: Victor Berger <victor.berger@m4x.org> Date: Tue Apr 16 10:42:04 2019 +0200 x11: port to evl2 with stubs commit be372898ddc60e47887c9a152c10ff498445f8cf Author: Victor Berger <victor.berger@m4x.org> Date: Mon Apr 15 17:35:59 2019 +0200 Fix compilation on Linux. Signed-off-by: Hal Gentz <zegentzy@protonmail.com> Co-authored-by: Francesca Plebani <franplebani@gmail.com>
2019-05-01 17:03:30 -06:00
}