diff options
Diffstat (limited to '')
-rw-r--r-- | examples/integration_opengl/src/main.rs | 4 | ||||
-rw-r--r-- | glutin/Cargo.toml | 4 | ||||
-rw-r--r-- | glutin/src/application.rs | 6 | ||||
-rw-r--r-- | glutin/src/multi_window.rs | 38 |
4 files changed, 29 insertions, 23 deletions
diff --git a/examples/integration_opengl/src/main.rs b/examples/integration_opengl/src/main.rs index 56470190..a9e9c732 100644 --- a/examples/integration_opengl/src/main.rs +++ b/examples/integration_opengl/src/main.rs @@ -31,7 +31,7 @@ pub fn main() { .unwrap(); unsafe { - let windowed_context = windowed_context.make_current().unwrap(); + let windowed_context = windowed_context.make_current(todo!("derezzedex")).unwrap(); let gl = glow::Context::from_loader_function(|s| { windowed_context.get_proc_address(s) as *const _ @@ -181,7 +181,7 @@ pub fn main() { ), ); - windowed_context.swap_buffers().unwrap(); + windowed_context.swap_buffers(todo!("derezzedex")).unwrap(); } _ => (), } diff --git a/glutin/Cargo.toml b/glutin/Cargo.toml index 2960a0bd..75a38d22 100644 --- a/glutin/Cargo.toml +++ b/glutin/Cargo.toml @@ -21,8 +21,8 @@ version = "0.4" [dependencies.glutin] version = "0.29" -git = "https://github.com/iced-rs/glutin" -rev = "da8d291486b4c9bec12487a46c119c4b1d386abf" +git = "https://github.com/derezzedex/glutin" +rev = "e72ea919f95106cfdfdce3e7dcfdbf71a432840a" [dependencies.iced_native] version = "0.7" diff --git a/glutin/src/application.rs b/glutin/src/application.rs index 108d7ffa..7ff6216e 100644 --- a/glutin/src/application.rs +++ b/glutin/src/application.rs @@ -120,7 +120,7 @@ where #[allow(unsafe_code)] unsafe { - context.make_current().expect("Make OpenGL context current") + context.make_current(todo!()).expect("Make OpenGL context current") } }; @@ -359,7 +359,7 @@ async fn run_instance<A, E, C>( unsafe { if !context.is_current() { context = context - .make_current() + .make_current(todo!()) .expect("Make OpenGL context current"); } } @@ -415,7 +415,7 @@ async fn run_instance<A, E, C>( &debug.overlay(), ); - context.swap_buffers().expect("Swap buffers"); + context.swap_buffers(todo!()).expect("Swap buffers"); debug.render_finished(); diff --git a/glutin/src/multi_window.rs b/glutin/src/multi_window.rs index 4949219f..ce34aa31 100644 --- a/glutin/src/multi_window.rs +++ b/glutin/src/multi_window.rs @@ -58,7 +58,7 @@ where runtime.enter(|| A::new(flags)) }; - let context = { + let (context, window) = { let builder = settings.window.into_builder( &application.title(), event_loop.primary_monitor(), @@ -115,7 +115,14 @@ where #[allow(unsafe_code)] unsafe { - context.make_current().expect("Make OpenGL context current") + let (context, window) = context.split(); + + ( + context + .make_current(&window) + .expect("Make OpenGL context current"), + window, + ) } }; @@ -137,6 +144,7 @@ where debug, receiver, context, + window, init_command, settings.exit_on_close_request, )); @@ -205,7 +213,8 @@ async fn run_instance<A, E, C>( mut receiver: mpsc::UnboundedReceiver< glutin::event::Event<'_, Event<A::Message>>, >, - context: glutin::ContextWrapper<glutin::PossiblyCurrent, Window>, + mut context: glutin::RawContext<glutin::PossiblyCurrent>, + window: Window, init_command: Command<A::Message>, _exit_on_close_request: bool, ) where @@ -217,9 +226,9 @@ async fn run_instance<A, E, C>( use glutin::event; use iced_winit::futures::stream::StreamExt; - let mut clipboard = Clipboard::connect(context.window()); + let mut clipboard = Clipboard::connect(&window); let mut cache = user_interface::Cache::default(); - let state = State::new(&application, context.window()); + let state = State::new(&application, &window); let user_interface = multi_window::build_user_interface( &application, user_interface::Cache::default(), @@ -229,9 +238,7 @@ async fn run_instance<A, E, C>( window::Id::MAIN, ); - #[allow(unsafe_code)] - let (mut context, window) = unsafe { context.split() }; - + let mut current_context_window = window.id(); let mut window_ids = HashMap::from([(window.id(), window::Id::MAIN)]); let mut windows = HashMap::from([(window::Id::MAIN, window)]); let mut states = HashMap::from([(window::Id::MAIN, state)]); @@ -445,15 +452,19 @@ async fn run_instance<A, E, C>( .get(&id) .and_then(|id| states.get_mut(id)) .unwrap(); + let window = + window_ids.get(&id).and_then(|id| windows.get(id)).unwrap(); debug.render_started(); #[allow(unsafe_code)] unsafe { - if !context.is_current() { + if current_context_window != id { context = context - .make_current() + .make_current(window) .expect("Make OpenGL context current"); + + current_context_window = id; } } @@ -483,11 +494,6 @@ async fn run_instance<A, E, C>( debug.draw_finished(); if new_mouse_interaction != mouse_interaction { - let window = window_ids - .get(&id) - .and_then(|id| windows.get_mut(id)) - .unwrap(); - window.set_cursor_icon(conversion::mouse_interaction( new_mouse_interaction, )); @@ -513,7 +519,7 @@ async fn run_instance<A, E, C>( &debug.overlay(), ); - context.swap_buffers().expect("Swap buffers"); + context.swap_buffers(window).expect("Swap buffers"); debug.render_finished(); |