diff options
| author | Christian Meissl <meissl.christian@gmail.com> | 2024-07-05 21:49:08 +0200 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-07-08 08:30:00 +0300 |
| commit | 570bf1cb3c1f9ffc847359009c6061e062c72871 (patch) | |
| tree | f087b302e1f25c61556170735fe9a70fe14ce9bb /src | |
| parent | 6ec9c72539684ed409427649a11837ab56a0250c (diff) | |
| download | niri-570bf1cb3c1f9ffc847359009c6061e062c72871.tar.gz niri-570bf1cb3c1f9ffc847359009c6061e062c72871.tar.bz2 niri-570bf1cb3c1f9ffc847359009c6061e062c72871.zip | |
bump smithay
Diffstat (limited to 'src')
| -rw-r--r-- | src/backend/tty.rs | 39 | ||||
| -rw-r--r-- | src/handlers/compositor.rs | 3 | ||||
| -rw-r--r-- | src/handlers/xdg_shell.rs | 6 | ||||
| -rw-r--r-- | src/render_helpers/renderer.rs | 4 | ||||
| -rw-r--r-- | src/render_helpers/surface.rs | 12 | ||||
| -rw-r--r-- | src/window/mapped.rs | 8 |
6 files changed, 32 insertions, 40 deletions
diff --git a/src/backend/tty.rs b/src/backend/tty.rs index 0654f4f0..dc0954d3 100644 --- a/src/backend/tty.rs +++ b/src/backend/tty.rs @@ -24,9 +24,9 @@ use smithay::backend::drm::{ DrmDevice, DrmDeviceFd, DrmEvent, DrmEventMetadata, DrmEventTime, DrmNode, NodeType, }; use smithay::backend::egl::context::ContextPriority; -use smithay::backend::egl::{EGLContext, EGLDevice, EGLDisplay}; +use smithay::backend::egl::{EGLDevice, EGLDisplay}; use smithay::backend::libinput::{LibinputInputBackend, LibinputSessionInterface}; -use smithay::backend::renderer::gles::{Capability, GlesRenderer}; +use smithay::backend::renderer::gles::GlesRenderer; use smithay::backend::renderer::multigpu::gbm::GbmGlesBackend; use smithay::backend::renderer::multigpu::{GpuManager, MultiFrame, MultiRenderer}; use smithay::backend::renderer::{DebugFlags, ImportDma, ImportEgl, Renderer}; @@ -148,7 +148,16 @@ impl OutputDevice { builder.add_connector(connector); builder.add_crtc(*crtc); let planes = self.drm.planes(crtc).map_err(LeaseRejected::with_cause)?; - builder.add_plane(planes.primary.handle); + let (primary_plane, primary_plane_claim) = planes + .primary + .iter() + .find_map(|plane| { + self.drm + .claim_plane(plane.handle, *crtc) + .map(|claim| (plane, claim)) + }) + .ok_or_else(LeaseRejected::default)?; + builder.add_plane(primary_plane.handle, primary_plane_claim); } Ok(builder) } @@ -239,25 +248,7 @@ impl Tty { }) .unwrap(); - let config_ = config.clone(); - let create_renderer = move |display: &EGLDisplay| { - let color_transforms = config_ - .borrow() - .debug - .enable_color_transformations_capability; - - let egl_context = EGLContext::new_with_priority(display, ContextPriority::High)?; - let gles = if color_transforms { - unsafe { GlesRenderer::new(egl_context)? } - } else { - let capabilities = unsafe { GlesRenderer::supported_capabilities(&egl_context) }? - .into_iter() - .filter(|c| *c != Capability::ColorTransformations); - unsafe { GlesRenderer::with_capabilities(egl_context, capabilities)? } - }; - Ok(gles) - }; - let api = GbmGlesBackend::with_factory(Box::new(create_renderer)); + let api = GbmGlesBackend::with_context_priority(ContextPriority::High); let gpu_manager = GpuManager::new(api).context("error creating the GPU manager")?; let (primary_node, primary_render_node) = primary_node_from_config(&config.borrow()) @@ -1987,8 +1978,8 @@ fn surface_dmabuf_feedback( let surface = compositor.surface(); let planes = surface.planes(); - let plane_formats = planes - .primary + let plane_formats = surface + .plane_info() .formats .iter() .chain(planes.overlay.iter().flat_map(|p| p.formats.iter())) diff --git a/src/handlers/compositor.rs b/src/handlers/compositor.rs index 34030124..583e88bd 100644 --- a/src/handlers/compositor.rs +++ b/src/handlers/compositor.rs @@ -50,7 +50,8 @@ impl CompositorHandler for State { let maybe_dmabuf = with_states(surface, |surface_data| { surface_data .cached_state - .pending::<SurfaceAttributes>() + .get::<SurfaceAttributes>() + .pending() .buffer .as_ref() .and_then(|assignment| match assignment { diff --git a/src/handlers/xdg_shell.rs b/src/handlers/xdg_shell.rs index 73eb01e9..4dc353b5 100644 --- a/src/handlers/xdg_shell.rs +++ b/src/handlers/xdg_shell.rs @@ -1006,8 +1006,10 @@ pub fn add_mapped_toplevel_pre_commit_hook(toplevel: &ToplevelSurface) -> HookId }; let (got_unmapped, commit_serial) = with_states(surface, |states| { - let attrs = states.cached_state.pending::<SurfaceAttributes>(); - let got_unmapped = matches!(attrs.buffer, Some(BufferAssignment::Removed)); + let got_unmapped = { + let mut guard = states.cached_state.get::<SurfaceAttributes>(); + matches!(guard.pending().buffer, Some(BufferAssignment::Removed)) + }; let role = states .data_map diff --git a/src/render_helpers/renderer.rs b/src/render_helpers/renderer.rs index 5c483182..f4872738 100644 --- a/src/render_helpers/renderer.rs +++ b/src/render_helpers/renderer.rs @@ -17,7 +17,7 @@ pub trait NiriRenderer: + AsGlesRenderer { // Associated types to work around the instability of associated type bounds. - type NiriTextureId: Texture + Clone + 'static; + type NiriTextureId: Texture + Clone + Send + 'static; type NiriError: std::error::Error + Send + Sync @@ -28,7 +28,7 @@ pub trait NiriRenderer: impl<R> NiriRenderer for R where R: ImportAll + ImportMem + ExportMem + Bind<Dmabuf> + Offscreen<GlesTexture> + AsGlesRenderer, - R::TextureId: Texture + Clone + 'static, + R::TextureId: Texture + Clone + Send + 'static, R::Error: std::error::Error + Send + Sync + From<<GlesRenderer as Renderer>::Error> + 'static, { type NiriTextureId = R::TextureId; diff --git a/src/render_helpers/surface.rs b/src/render_helpers/surface.rs index 93738673..96065923 100644 --- a/src/render_helpers/surface.rs +++ b/src/render_helpers/surface.rs @@ -25,7 +25,7 @@ pub fn render_snapshot_from_surface_tree( let data = states.data_map.get::<RendererSurfaceStateUserData>(); if let Some(data) = data { - let data = &*data.borrow(); + let data = &*data.lock().unwrap(); if let Some(view) = data.view() { location += view.offset.to_f64(); @@ -42,19 +42,17 @@ pub fn render_snapshot_from_surface_tree( let data = states.data_map.get::<RendererSurfaceStateUserData>(); if let Some(data) = data { - if let Some(view) = data.borrow().view() { - location += view.offset.to_f64(); - } else { + let Some(view) = data.lock().unwrap().view() else { return; - } + }; + location += view.offset.to_f64(); if let Err(err) = import_surface(renderer, states) { warn!("failed to import surface: {err:?}"); return; } - let data = data.borrow(); - let view = data.view().unwrap(); + let data = data.lock().unwrap(); let Some(texture) = data.texture::<GlesRenderer>(renderer.id()) else { return; }; diff --git a/src/window/mapped.rs b/src/window/mapped.rs index 8b6b8e61..178b0a30 100644 --- a/src/window/mapped.rs +++ b/src/window/mapped.rs @@ -461,8 +461,8 @@ impl LayoutElement for Mapped { fn min_size(&self) -> Size<i32, Logical> { let mut size = with_states(self.toplevel().wl_surface(), |state| { - let curr = state.cached_state.current::<SurfaceCachedState>(); - curr.min_size + let mut guard = state.cached_state.get::<SurfaceCachedState>(); + guard.current().min_size }); if let Some(x) = self.rules.min_width { @@ -477,8 +477,8 @@ impl LayoutElement for Mapped { fn max_size(&self) -> Size<i32, Logical> { let mut size = with_states(self.toplevel().wl_surface(), |state| { - let curr = state.cached_state.current::<SurfaceCachedState>(); - curr.max_size + let mut guard = state.cached_state.get::<SurfaceCachedState>(); + guard.current().max_size }); if let Some(x) = self.rules.max_width { |
