diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-12-31 12:02:39 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-12-31 12:02:39 +0400 |
| commit | 0dd9a42087fed36e999c569aea02fc1d4e1db856 (patch) | |
| tree | 6f721eb1c336021a7536424cbd6b53d283e268cb /src | |
| parent | 658941f2c3bced84b3bcf7b7f0c025a8327197b9 (diff) | |
| download | niri-0dd9a42087fed36e999c569aea02fc1d4e1db856.tar.gz niri-0dd9a42087fed36e999c569aea02fc1d4e1db856.tar.bz2 niri-0dd9a42087fed36e999c569aea02fc1d4e1db856.zip | |
Move DmabufState to Niri
Diffstat (limited to 'src')
| -rw-r--r-- | src/backend/tty.rs | 18 | ||||
| -rw-r--r-- | src/handlers/mod.rs | 2 | ||||
| -rw-r--r-- | src/niri.rs | 5 |
3 files changed, 9 insertions, 16 deletions
diff --git a/src/backend/tty.rs b/src/backend/tty.rs index f091672f..ec45aeff 100644 --- a/src/backend/tty.rs +++ b/src/backend/tty.rs @@ -33,7 +33,7 @@ use smithay::reexports::rustix::fs::OFlags; use smithay::reexports::wayland_protocols::wp::linux_dmabuf::zv1::server::zwp_linux_dmabuf_feedback_v1::TrancheFlags; use smithay::reexports::wayland_protocols::wp::presentation_time::server::wp_presentation_feedback; use smithay::utils::DeviceFd; -use smithay::wayland::dmabuf::{DmabufFeedbackBuilder, DmabufGlobal, DmabufState, DmabufFeedback}; +use smithay::wayland::dmabuf::{DmabufFeedbackBuilder, DmabufGlobal, DmabufFeedback}; use smithay_drm_extras::drm_scanner::{DrmScanEvent, DrmScanner}; use smithay_drm_extras::edid::EdidInfo; @@ -70,7 +70,6 @@ struct OutputDevice { formats: HashSet<DrmFormat>, drm_scanner: DrmScanner, surfaces: HashMap<crtc::Handle, Surface>, - dmabuf_state: DmabufState, dmabuf_global: DmabufGlobal, // SAFETY: drop after all the objects used with them are dropped. // See https://github.com/Smithay/smithay/issues/1102. @@ -329,11 +328,11 @@ impl Tty { let formats = Bind::<Dmabuf>::supported_formats(&gles).unwrap_or_default(); - let mut dmabuf_state = DmabufState::new(); let default_feedback = DmabufFeedbackBuilder::new(device_id, gles.dmabuf_formats()) .build() .context("error building default dmabuf feedback")?; - let dmabuf_global = dmabuf_state + let dmabuf_global = niri + .dmabuf_state .create_global_with_default_feedback::<State>(&niri.display_handle, &default_feedback); self.output_device = Some(OutputDevice { @@ -345,7 +344,6 @@ impl Tty { formats, drm_scanner: DrmScanner::new(), surfaces: HashMap::new(), - dmabuf_state, dmabuf_global, }); @@ -401,8 +399,7 @@ impl Tty { } let mut device = self.output_device.take().unwrap(); - device - .dmabuf_state + niri.dmabuf_state .destroy_global::<State>(&niri.display_handle, device.dmabuf_global); device.gles.unbind_wl_display(); @@ -952,13 +949,6 @@ impl Tty { } } - pub fn dmabuf_state(&mut self) -> &mut DmabufState { - let device = self.output_device.as_mut().expect( - "the dmabuf global must be created and destroyed together with the output device", - ); - &mut device.dmabuf_state - } - pub fn connectors(&self) -> Arc<Mutex<HashMap<String, Output>>> { self.connectors.clone() } diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs index 16fd35b3..42f83a62 100644 --- a/src/handlers/mod.rs +++ b/src/handlers/mod.rs @@ -193,7 +193,7 @@ delegate_presentation!(State); impl DmabufHandler for State { fn dmabuf_state(&mut self) -> &mut DmabufState { - self.backend.tty().dmabuf_state() + &mut self.niri.dmabuf_state } fn dmabuf_imported( diff --git a/src/niri.rs b/src/niri.rs index 3a3a4f4d..043c0d67 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -58,7 +58,7 @@ use smithay::wayland::compositor::{ CompositorState, SurfaceData, TraversalAction, }; use smithay::wayland::cursor_shape::CursorShapeManagerState; -use smithay::wayland::dmabuf::DmabufFeedback; +use smithay::wayland::dmabuf::{DmabufFeedback, DmabufState}; use smithay::wayland::input_method::InputMethodManagerState; use smithay::wayland::output::OutputManagerState; use smithay::wayland::pointer_constraints::{with_pointer_constraint, PointerConstraintsState}; @@ -138,6 +138,7 @@ pub struct Niri { pub session_lock_state: SessionLockManagerState, pub shm_state: ShmState, pub output_manager_state: OutputManagerState, + pub dmabuf_state: DmabufState, pub seat_state: SeatState<State>, pub tablet_state: TabletManagerState, pub text_input_state: TextInputManagerState, @@ -647,6 +648,7 @@ impl Niri { let shm_state = ShmState::new::<State>(&display_handle, vec![]); let output_manager_state = OutputManagerState::new_with_xdg_output::<State>(&display_handle); + let dmabuf_state = DmabufState::new(); let mut seat_state = SeatState::new(); let tablet_state = TabletManagerState::new::<State>(&display_handle); let pointer_gestures_state = PointerGesturesState::new::<State>(&display_handle); @@ -760,6 +762,7 @@ impl Niri { virtual_keyboard_state, shm_state, output_manager_state, + dmabuf_state, seat_state, tablet_state, pointer_gestures_state, |
