From cb857e32e4295822fad39ebf5d9c650f6ead95aa Mon Sep 17 00:00:00 2001 From: Christian Meissl Date: Thu, 17 Apr 2025 13:54:17 +0200 Subject: Bump Smithay and others Presentation subsurface fix, popup unconstrain resize fix, cursor shape fix, refactors. --- src/render_helpers/offscreen.rs | 18 +++++++++--------- src/render_helpers/surface.rs | 2 +- src/render_helpers/texture.rs | 16 ++++++++-------- 3 files changed, 18 insertions(+), 18 deletions(-) (limited to 'src/render_helpers') diff --git a/src/render_helpers/offscreen.rs b/src/render_helpers/offscreen.rs index 71959404..7798a481 100644 --- a/src/render_helpers/offscreen.rs +++ b/src/render_helpers/offscreen.rs @@ -13,7 +13,7 @@ use smithay::backend::renderer::utils::{ CommitCounter, DamageBag, DamageSet, DamageSnapshot, OpaqueRegions, }; use smithay::backend::renderer::{ - Bind as _, Color32F, Frame as _, Offscreen as _, Renderer, Texture as _, + Bind as _, Color32F, ContextId, Frame as _, Offscreen as _, Renderer, Texture as _, }; use smithay::utils::{Buffer, Logical, Physical, Point, Rectangle, Scale, Size, Transform}; @@ -36,8 +36,8 @@ pub struct OffscreenBuffer { struct Inner { /// The texture with offscreened contents. texture: GlesTexture, - /// Id of the renderer that the texture comes from. - renderer_id: usize, + /// Id of the renderer context that the texture comes from. + renderer_context_id: ContextId, /// Scale of the texture. scale: Scale, /// Damage tracker for drawing to the texture. @@ -50,7 +50,7 @@ struct Inner { pub struct OffscreenRenderElement { id: Id, texture: GlesTexture, - renderer_id: usize, + renderer_context_id: ContextId, scale: Scale, damage: DamageSnapshot, offset: Point, @@ -92,7 +92,7 @@ impl OffscreenBuffer { let mut reason = ""; if let Some(Inner { texture, - renderer_id, + renderer_context_id, .. }) = inner.as_mut() { @@ -109,7 +109,7 @@ impl OffscreenBuffer { reason = "not unique"; *inner = None; - } else if *renderer_id != renderer.id() { + } else if *renderer_context_id != renderer.context_id() { reason = "renderer id changed"; *inner = None; @@ -134,7 +134,7 @@ impl OffscreenBuffer { inner.insert(Inner { texture, - renderer_id: renderer.id(), + renderer_context_id: renderer.context_id(), scale, damage, outer_damage: DamageBag::default(), @@ -180,7 +180,7 @@ impl OffscreenBuffer { let elem = OffscreenRenderElement { id: self.id.clone(), texture: inner.texture.clone(), - renderer_id: inner.renderer_id, + renderer_context_id: inner.renderer_context_id.clone(), scale, damage: inner.outer_damage.snapshot(), offset, @@ -305,7 +305,7 @@ impl RenderElement for OffscreenRenderElement { damage: &[Rectangle], opaque_regions: &[Rectangle], ) -> Result<(), GlesError> { - if frame.id() != self.renderer_id { + if frame.context_id() != self.renderer_context_id { warn!("trying to render texture from different renderer"); return Ok(()); } diff --git a/src/render_helpers/surface.rs b/src/render_helpers/surface.rs index 96065923..d4722c17 100644 --- a/src/render_helpers/surface.rs +++ b/src/render_helpers/surface.rs @@ -53,7 +53,7 @@ pub fn render_snapshot_from_surface_tree( } let data = data.lock().unwrap(); - let Some(texture) = data.texture::(renderer.id()) else { + let Some(texture) = data.texture(renderer.context_id()) else { return; }; diff --git a/src/render_helpers/texture.rs b/src/render_helpers/texture.rs index 2967c361..7fcd4356 100644 --- a/src/render_helpers/texture.rs +++ b/src/render_helpers/texture.rs @@ -2,17 +2,17 @@ use smithay::backend::allocator::Fourcc; use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage}; use smithay::backend::renderer::gles::GlesTexture; use smithay::backend::renderer::utils::{CommitCounter, OpaqueRegions}; -use smithay::backend::renderer::{Frame as _, ImportMem, Renderer, Texture}; +use smithay::backend::renderer::{ContextId, Frame as _, ImportMem, Renderer, Texture}; use smithay::utils::{Buffer, Logical, Physical, Point, Rectangle, Scale, Size, Transform}; use super::memory::MemoryBuffer; /// Smithay's texture buffer, but with fractional scale. #[derive(Debug, Clone)] -pub struct TextureBuffer { +pub struct TextureBuffer { id: Id, commit_counter: CommitCounter, - renderer_id: usize, + renderer_context_id: ContextId, texture: T, scale: Scale, transform: Transform, @@ -21,7 +21,7 @@ pub struct TextureBuffer { /// Render element for a [`TextureBuffer`]. #[derive(Debug, Clone)] -pub struct TextureRenderElement { +pub struct TextureRenderElement { buffer: TextureBuffer, location: Point, alpha: f32, @@ -30,7 +30,7 @@ pub struct TextureRenderElement { kind: Kind, } -impl TextureBuffer { +impl TextureBuffer { pub fn from_texture>( renderer: &R, texture: T, @@ -41,7 +41,7 @@ impl TextureBuffer { TextureBuffer { id: Id::new(), commit_counter: CommitCounter::default(), - renderer_id: renderer.id(), + renderer_context_id: renderer.context_id(), texture, scale: scale.into(), transform, @@ -122,7 +122,7 @@ impl TextureBuffer { } } -impl TextureRenderElement { +impl TextureRenderElement { pub fn from_texture_buffer( buffer: TextureBuffer, location: impl Into>, @@ -226,7 +226,7 @@ where damage: &[Rectangle], opaque_regions: &[Rectangle], ) -> Result<(), R::Error> { - if frame.id() != self.buffer.renderer_id { + if frame.context_id() != self.buffer.renderer_context_id { warn!("trying to render texture from different renderer"); return Ok(()); } -- cgit