summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-12-02 20:49:47 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-12-02 20:49:47 +0100
commitb152ecda63238136f77b6eda3c582fa1eff99737 (patch)
tree0bf1bc8f2087b533d699aefcf161e794c47fba01
parentea42af766f345715ff7a7168182d3896ee79cfbc (diff)
downloadiced-b152ecda63238136f77b6eda3c582fa1eff99737.tar.gz
iced-b152ecda63238136f77b6eda3c582fa1eff99737.tar.bz2
iced-b152ecda63238136f77b6eda3c582fa1eff99737.zip
Separate `Compositor::new` from `Compositor::create_renderer`
-rw-r--r--graphics/src/compositor.rs4
-rw-r--r--renderer/src/compositor.rs47
-rw-r--r--tiny_skia/src/window/compositor.rs28
-rw-r--r--wgpu/src/window/compositor.rs21
-rw-r--r--winit/src/application.rs4
-rw-r--r--winit/src/multi_window.rs4
-rw-r--r--winit/src/multi_window/windows.rs2
7 files changed, 35 insertions, 75 deletions
diff --git a/graphics/src/compositor.rs b/graphics/src/compositor.rs
index 78731a98..b8b575b4 100644
--- a/graphics/src/compositor.rs
+++ b/graphics/src/compositor.rs
@@ -22,10 +22,10 @@ pub trait Compositor: Sized {
fn new<W: HasRawWindowHandle + HasRawDisplayHandle>(
settings: Self::Settings,
compatible_window: Option<&W>,
- ) -> Result<(Self, Self::Renderer), Error>;
+ ) -> Result<Self, Error>;
/// Creates a [`Self::Renderer`] for the [`Compositor`].
- fn renderer(&self) -> Self::Renderer;
+ fn create_renderer(&self) -> Self::Renderer;
/// Crates a new [`Surface`] for the given window.
///
diff --git a/renderer/src/compositor.rs b/renderer/src/compositor.rs
index 5bec1639..9d0ff9ab 100644
--- a/renderer/src/compositor.rs
+++ b/renderer/src/compositor.rs
@@ -26,7 +26,7 @@ impl<Theme> crate::graphics::Compositor for Compositor<Theme> {
fn new<W: HasRawWindowHandle + HasRawDisplayHandle>(
settings: Self::Settings,
compatible_window: Option<&W>,
- ) -> Result<(Self, Self::Renderer), Error> {
+ ) -> Result<Self, Error> {
let candidates =
Candidate::list_from_env().unwrap_or(Candidate::default_list());
@@ -34,9 +34,7 @@ impl<Theme> crate::graphics::Compositor for Compositor<Theme> {
for candidate in candidates {
match candidate.build(settings, compatible_window) {
- Ok((compositor, renderer)) => {
- return Ok((compositor, renderer))
- }
+ Ok(compositor) => return Ok(compositor),
Err(new_error) => {
error = new_error;
}
@@ -46,14 +44,14 @@ impl<Theme> crate::graphics::Compositor for Compositor<Theme> {
Err(error)
}
- fn renderer(&self) -> Self::Renderer {
+ fn create_renderer(&self) -> Self::Renderer {
match self {
Compositor::TinySkia(compositor) => {
- Renderer::TinySkia(compositor.renderer())
+ Renderer::TinySkia(compositor.create_renderer())
}
#[cfg(feature = "wgpu")]
Compositor::Wgpu(compositor) => {
- Renderer::Wgpu(compositor.renderer())
+ Renderer::Wgpu(compositor.create_renderer())
}
}
}
@@ -232,29 +230,21 @@ impl Candidate {
self,
settings: Settings,
_compatible_window: Option<&W>,
- ) -> Result<(Compositor<Theme>, Renderer<Theme>), Error> {
+ ) -> Result<Compositor<Theme>, Error> {
match self {
Self::TinySkia => {
- let (compositor, backend) =
- iced_tiny_skia::window::compositor::new(
- iced_tiny_skia::Settings {
- default_font: settings.default_font,
- default_text_size: settings.default_text_size,
- },
- );
+ let compositor = iced_tiny_skia::window::compositor::new(
+ iced_tiny_skia::Settings {
+ default_font: settings.default_font,
+ default_text_size: settings.default_text_size,
+ },
+ );
- Ok((
- Compositor::TinySkia(compositor),
- Renderer::TinySkia(iced_tiny_skia::Renderer::new(
- backend,
- settings.default_font,
- settings.default_text_size,
- )),
- ))
+ Ok(Compositor::TinySkia(compositor))
}
#[cfg(feature = "wgpu")]
Self::Wgpu => {
- let (compositor, backend) = iced_wgpu::window::compositor::new(
+ let compositor = iced_wgpu::window::compositor::new(
iced_wgpu::Settings {
default_font: settings.default_font,
default_text_size: settings.default_text_size,
@@ -264,14 +254,7 @@ impl Candidate {
_compatible_window,
)?;
- Ok((
- Compositor::Wgpu(compositor),
- Renderer::Wgpu(iced_wgpu::Renderer::new(
- backend,
- settings.default_font,
- settings.default_text_size,
- )),
- ))
+ Ok(Compositor::Wgpu(compositor))
}
#[cfg(not(feature = "wgpu"))]
Self::Wgpu => {
diff --git a/tiny_skia/src/window/compositor.rs b/tiny_skia/src/window/compositor.rs
index 32095e23..87ded746 100644
--- a/tiny_skia/src/window/compositor.rs
+++ b/tiny_skia/src/window/compositor.rs
@@ -28,20 +28,11 @@ impl<Theme> crate::graphics::Compositor for Compositor<Theme> {
fn new<W: HasRawWindowHandle + HasRawDisplayHandle>(
settings: Self::Settings,
_compatible_window: Option<&W>,
- ) -> Result<(Self, Self::Renderer), Error> {
- let (compositor, backend) = new(settings);
-
- Ok((
- compositor,
- Renderer::new(
- backend,
- settings.default_font,
- settings.default_text_size,
- ),
- ))
+ ) -> Result<Self, Error> {
+ Ok(new(settings))
}
- fn renderer(&self) -> Self::Renderer {
+ fn create_renderer(&self) -> Self::Renderer {
Renderer::new(
Backend::new(),
self.settings.default_font,
@@ -130,14 +121,11 @@ impl<Theme> crate::graphics::Compositor for Compositor<Theme> {
}
}
-pub fn new<Theme>(settings: Settings) -> (Compositor<Theme>, Backend) {
- (
- Compositor {
- settings,
- _theme: PhantomData,
- },
- Backend::new(),
- )
+pub fn new<Theme>(settings: Settings) -> Compositor<Theme> {
+ Compositor {
+ settings,
+ _theme: PhantomData,
+ }
}
pub fn present<T: AsRef<str>>(
diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs
index 21406134..090e0e9f 100644
--- a/wgpu/src/window/compositor.rs
+++ b/wgpu/src/window/compositor.rs
@@ -139,16 +139,14 @@ impl<Theme> Compositor<Theme> {
pub fn new<Theme, W: HasRawWindowHandle + HasRawDisplayHandle>(
settings: Settings,
compatible_window: Option<&W>,
-) -> Result<(Compositor<Theme>, Backend), Error> {
+) -> Result<Compositor<Theme>, Error> {
let compositor = futures::executor::block_on(Compositor::request(
settings,
compatible_window,
))
.ok_or(Error::GraphicsAdapterNotFound)?;
- let backend = compositor.create_backend();
-
- Ok((compositor, backend))
+ Ok(compositor)
}
/// Presents the given primitives with the given [`Compositor`] and [`Backend`].
@@ -214,20 +212,11 @@ impl<Theme> graphics::Compositor for Compositor<Theme> {
fn new<W: HasRawWindowHandle + HasRawDisplayHandle>(
settings: Self::Settings,
compatible_window: Option<&W>,
- ) -> Result<(Self, Self::Renderer), Error> {
- let (compositor, backend) = new(settings, compatible_window)?;
-
- Ok((
- compositor,
- Renderer::new(
- backend,
- settings.default_font,
- settings.default_text_size,
- ),
- ))
+ ) -> Result<Self, Error> {
+ new(settings, compatible_window)
}
- fn renderer(&self) -> Self::Renderer {
+ fn create_renderer(&self) -> Self::Renderer {
Renderer::new(
self.create_backend(),
self.settings.default_font,
diff --git a/winit/src/application.rs b/winit/src/application.rs
index cc1db8cb..d9700075 100644
--- a/winit/src/application.rs
+++ b/winit/src/application.rs
@@ -181,8 +181,8 @@ where
};
}
- let (compositor, mut renderer) =
- C::new(compositor_settings, Some(&window))?;
+ let compositor = C::new(compositor_settings, Some(&window))?;
+ let mut renderer = compositor.create_renderer();
for font in settings.fonts {
use crate::core::text::Renderer;
diff --git a/winit/src/multi_window.rs b/winit/src/multi_window.rs
index aeb2c5e1..31c27a6d 100644
--- a/winit/src/multi_window.rs
+++ b/winit/src/multi_window.rs
@@ -181,8 +181,8 @@ where
};
}
- let (mut compositor, renderer) =
- C::new(compositor_settings, Some(&main_window))?;
+ let mut compositor = C::new(compositor_settings, Some(&main_window))?;
+ let renderer = compositor.create_renderer();
let windows = Windows::new(
&application,
diff --git a/winit/src/multi_window/windows.rs b/winit/src/multi_window/windows.rs
index a4841a45..5a33b7b4 100644
--- a/winit/src/multi_window/windows.rs
+++ b/winit/src/multi_window/windows.rs
@@ -97,7 +97,7 @@ where
physical_size.width,
physical_size.height,
);
- let renderer = compositor.renderer();
+ let renderer = compositor.create_renderer();
self.ids.push(id);
self.raw.push(window);