mirror of
https://github.com/slint-ui/slint.git
synced 2025-09-01 08:07:23 +00:00
winit: Simplify internal renderer trait
Don't require the creation of an Rc<winit window>, leave that to the caller.
This commit is contained in:
parent
0475b91daf
commit
c3cee1c3d9
5 changed files with 13 additions and 13 deletions
|
@ -24,7 +24,7 @@ pub enum SlintUserEvent {
|
||||||
}
|
}
|
||||||
|
|
||||||
mod renderer {
|
mod renderer {
|
||||||
use std::rc::{Rc, Weak};
|
use std::rc::Weak;
|
||||||
|
|
||||||
use i_slint_core::api::PhysicalSize;
|
use i_slint_core::api::PhysicalSize;
|
||||||
use i_slint_core::platform::PlatformError;
|
use i_slint_core::platform::PlatformError;
|
||||||
|
@ -37,7 +37,7 @@ mod renderer {
|
||||||
window_adapter_weak: &Weak<dyn WindowAdapter>,
|
window_adapter_weak: &Weak<dyn WindowAdapter>,
|
||||||
window_builder: winit::window::WindowBuilder,
|
window_builder: winit::window::WindowBuilder,
|
||||||
#[cfg(target_arch = "wasm32")] canvas_id: &str,
|
#[cfg(target_arch = "wasm32")] canvas_id: &str,
|
||||||
) -> Result<(Self, Rc<winit::window::Window>), PlatformError>
|
) -> Result<(Self, winit::window::Window), PlatformError>
|
||||||
where
|
where
|
||||||
Self: Sized;
|
Self: Sized;
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
use std::rc::{Rc, Weak};
|
use std::rc::Weak;
|
||||||
|
|
||||||
use i_slint_core::api::{
|
use i_slint_core::api::{
|
||||||
GraphicsAPI, PhysicalSize as PhysicalWindowSize, RenderingNotifier, RenderingState,
|
GraphicsAPI, PhysicalSize as PhysicalWindowSize, RenderingNotifier, RenderingState,
|
||||||
|
@ -60,7 +60,7 @@ impl super::WinitCompatibleRenderer for GlutinFemtoVGRenderer {
|
||||||
window_adapter_weak: &Weak<dyn WindowAdapter>,
|
window_adapter_weak: &Weak<dyn WindowAdapter>,
|
||||||
window_builder: winit::window::WindowBuilder,
|
window_builder: winit::window::WindowBuilder,
|
||||||
#[cfg(target_arch = "wasm32")] canvas_id: &str,
|
#[cfg(target_arch = "wasm32")] canvas_id: &str,
|
||||||
) -> Result<(Self, Rc<winit::window::Window>), PlatformError> {
|
) -> Result<(Self, winit::window::Window), PlatformError> {
|
||||||
let (winit_window, opengl_context) = crate::event_loop::with_window_target(|event_loop| {
|
let (winit_window, opengl_context) = crate::event_loop::with_window_target(|event_loop| {
|
||||||
glcontext::OpenGLContext::new_context(
|
glcontext::OpenGLContext::new_context(
|
||||||
window_builder,
|
window_builder,
|
||||||
|
@ -80,7 +80,7 @@ impl super::WinitCompatibleRenderer for GlutinFemtoVGRenderer {
|
||||||
|
|
||||||
Ok((
|
Ok((
|
||||||
Self { rendering_notifier: Default::default(), renderer, opengl_context },
|
Self { rendering_notifier: Default::default(), renderer, opengl_context },
|
||||||
Rc::new(winit_window),
|
winit_window,
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Copyright © SixtyFPS GmbH <info@slint-ui.com>
|
// Copyright © SixtyFPS GmbH <info@slint-ui.com>
|
||||||
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-commercial
|
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-commercial
|
||||||
|
|
||||||
use std::rc::{Rc, Weak};
|
use std::rc::Weak;
|
||||||
|
|
||||||
use i_slint_core::api::PhysicalSize as PhysicalWindowSize;
|
use i_slint_core::api::PhysicalSize as PhysicalWindowSize;
|
||||||
use i_slint_core::platform::PlatformError;
|
use i_slint_core::platform::PlatformError;
|
||||||
|
@ -17,12 +17,12 @@ impl super::WinitCompatibleRenderer for SkiaRenderer {
|
||||||
fn new(
|
fn new(
|
||||||
window_adapter_weak: &Weak<dyn WindowAdapter>,
|
window_adapter_weak: &Weak<dyn WindowAdapter>,
|
||||||
window_builder: winit::window::WindowBuilder,
|
window_builder: winit::window::WindowBuilder,
|
||||||
) -> Result<(Self, Rc<winit::window::Window>), PlatformError> {
|
) -> Result<(Self, winit::window::Window), PlatformError> {
|
||||||
let winit_window = Rc::new(crate::event_loop::with_window_target(|event_loop| {
|
let winit_window = crate::event_loop::with_window_target(|event_loop| {
|
||||||
window_builder.build(event_loop.event_loop_target()).map_err(|winit_os_error| {
|
window_builder.build(event_loop.event_loop_target()).map_err(|winit_os_error| {
|
||||||
format!("Error creating native window for Skia rendering: {}", winit_os_error)
|
format!("Error creating native window for Skia rendering: {}", winit_os_error)
|
||||||
})
|
})
|
||||||
})?);
|
})?;
|
||||||
|
|
||||||
let size: winit::dpi::PhysicalSize<u32> = winit_window.inner_size();
|
let size: winit::dpi::PhysicalSize<u32> = winit_window.inner_size();
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ use i_slint_core::software_renderer::PremultipliedRgbaColor;
|
||||||
pub use i_slint_core::software_renderer::SoftwareRenderer;
|
pub use i_slint_core::software_renderer::SoftwareRenderer;
|
||||||
use i_slint_core::window::WindowAdapter;
|
use i_slint_core::window::WindowAdapter;
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::rc::{Rc, Weak};
|
use std::rc::Weak;
|
||||||
|
|
||||||
pub struct WinitSoftwareRenderer {
|
pub struct WinitSoftwareRenderer {
|
||||||
renderer: SoftwareRenderer,
|
renderer: SoftwareRenderer,
|
||||||
|
@ -23,7 +23,7 @@ impl super::WinitCompatibleRenderer for WinitSoftwareRenderer {
|
||||||
fn new(
|
fn new(
|
||||||
window_adapter_weak: &Weak<dyn WindowAdapter>,
|
window_adapter_weak: &Weak<dyn WindowAdapter>,
|
||||||
window_builder: winit::window::WindowBuilder,
|
window_builder: winit::window::WindowBuilder,
|
||||||
) -> Result<(Self, Rc<winit::window::Window>), PlatformError> {
|
) -> Result<(Self, winit::window::Window), PlatformError> {
|
||||||
let winit_window = crate::event_loop::with_window_target(|event_loop| {
|
let winit_window = crate::event_loop::with_window_target(|event_loop| {
|
||||||
window_builder.build(event_loop.event_loop_target()).map_err(|winit_os_error| {
|
window_builder.build(event_loop.event_loop_target()).map_err(|winit_os_error| {
|
||||||
format!("Error creating native window for software rendering: {}", winit_os_error)
|
format!("Error creating native window for software rendering: {}", winit_os_error)
|
||||||
|
@ -43,7 +43,7 @@ impl super::WinitCompatibleRenderer for WinitSoftwareRenderer {
|
||||||
),
|
),
|
||||||
canvas: RefCell::new(canvas),
|
canvas: RefCell::new(canvas),
|
||||||
},
|
},
|
||||||
Rc::new(winit_window),
|
winit_window,
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -164,7 +164,7 @@ impl<Renderer: WinitCompatibleRenderer + 'static> WinitWindowAdapter<Renderer> {
|
||||||
}) {
|
}) {
|
||||||
Ok((new_renderer, winit_window)) => {
|
Ok((new_renderer, winit_window)) => {
|
||||||
result.renderer = OnceCell::with_value(new_renderer);
|
result.renderer = OnceCell::with_value(new_renderer);
|
||||||
result.winit_window = Some(winit_window);
|
result.winit_window = Some(Rc::new(winit_window));
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
platform_error = Some(err);
|
platform_error = Some(err);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue