aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/headless.rs3
-rw-r--r--src/backend/tty.rs16
-rw-r--r--src/backend/winit.rs6
-rw-r--r--src/pw_utils.rs2
4 files changed, 17 insertions, 10 deletions
diff --git a/src/backend/headless.rs b/src/backend/headless.rs
index 5b8c7428..3c96f731 100644
--- a/src/backend/headless.rs
+++ b/src/backend/headless.rs
@@ -13,6 +13,7 @@ use smithay::backend::renderer::gles::GlesRenderer;
use smithay::output::{Mode, Output, PhysicalProperties, Subpixel};
use smithay::reexports::wayland_protocols::wp::presentation_time::server::wp_presentation_feedback;
use smithay::utils::Size;
+use smithay::wayland::presentation::Refresh;
use super::{IpcOutputMap, OutputId, RenderResult};
use crate::niri::{Niri, RedrawState};
@@ -102,7 +103,7 @@ impl Headless {
let mut presentation_feedbacks = niri.take_presentation_feedbacks(output, &states);
presentation_feedbacks.presented::<_, smithay::utils::Monotonic>(
get_monotonic_time(),
- std::time::Duration::ZERO,
+ Refresh::Unknown,
0,
wp_presentation_feedback::Kind::empty(),
);
diff --git a/src/backend/tty.rs b/src/backend/tty.rs
index b5991d3f..f9b9d33c 100644
--- a/src/backend/tty.rs
+++ b/src/backend/tty.rs
@@ -50,6 +50,7 @@ use smithay::wayland::dmabuf::{DmabufFeedback, DmabufFeedbackBuilder, DmabufGlob
use smithay::wayland::drm_lease::{
DrmLease, DrmLeaseBuilder, DrmLeaseRequest, DrmLeaseState, LeaseRejected,
};
+use smithay::wayland::presentation::Refresh;
use smithay_drm_extras::drm_scanner::{DrmScanEvent, DrmScanner};
use wayland_protocols::wp::linux_dmabuf::zv1::server::zwp_linux_dmabuf_feedback_v1::TrancheFlags;
use wayland_protocols::wp::presentation_time::server::wp_presentation_feedback;
@@ -1233,10 +1234,17 @@ impl Tty {
// Mark the last frame as submitted.
match surface.compositor.frame_submitted() {
Ok(Some((mut feedback, target_presentation_time))) => {
- let refresh = output_state
- .frame_clock
- .refresh_interval()
- .unwrap_or(Duration::ZERO);
+ let refresh = match output_state.frame_clock.refresh_interval() {
+ Some(refresh) => {
+ if output_state.frame_clock.vrr() {
+ Refresh::Variable(refresh)
+ } else {
+ Refresh::Fixed(refresh)
+ }
+ }
+ None => Refresh::Unknown,
+ };
+
// FIXME: ideally should be monotonically increasing for a surface.
let seq = meta.sequence as u64;
let mut flags = wp_presentation_feedback::Kind::Vsync
diff --git a/src/backend/winit.rs b/src/backend/winit.rs
index 500215f7..3472ff3e 100644
--- a/src/backend/winit.rs
+++ b/src/backend/winit.rs
@@ -3,7 +3,6 @@ use std::collections::HashMap;
use std::mem;
use std::rc::Rc;
use std::sync::{Arc, Mutex};
-use std::time::Duration;
use niri_config::{Config, OutputName};
use smithay::backend::allocator::dmabuf::Dmabuf;
@@ -16,6 +15,7 @@ use smithay::reexports::calloop::LoopHandle;
use smithay::reexports::wayland_protocols::wp::presentation_time::server::wp_presentation_feedback;
use smithay::reexports::winit::dpi::LogicalSize;
use smithay::reexports::winit::window::Window;
+use smithay::wayland::presentation::Refresh;
use super::{IpcOutputMap, OutputId, RenderResult};
use crate::niri::{Niri, RedrawState, State};
@@ -216,11 +216,9 @@ impl Winit {
self.backend.submit(Some(damage)).unwrap();
let mut presentation_feedbacks = niri.take_presentation_feedbacks(output, &res.states);
- let mode = output.current_mode().unwrap();
- let refresh = Duration::from_secs_f64(1_000f64 / mode.refresh as f64);
presentation_feedbacks.presented::<_, smithay::utils::Monotonic>(
get_monotonic_time(),
- refresh,
+ Refresh::Unknown,
0,
wp_presentation_feedback::Kind::empty(),
);
diff --git a/src/pw_utils.rs b/src/pw_utils.rs
index a68ba9fe..95b7e9c0 100644
--- a/src/pw_utils.rs
+++ b/src/pw_utils.rs
@@ -1027,7 +1027,7 @@ fn allocate_buffer(
.create_buffer_object_with_modifiers2::<()>(w, h, fourcc, modifiers, flags)
.context("error creating GBM buffer object")?;
- let modifier = bo.modifier().unwrap();
+ let modifier = bo.modifier();
let buffer = GbmBuffer::from_bo(bo, false);
Ok((buffer, modifier))
}