feat: support authorized screencopy

This commit is contained in:
Samuel Onoja committed 2026-09-25 01:36:07 +01:00
1 parent 05f801aee6
commit 20b468c6ac
6 files changed
+439 -2

No files matched your search

+18 -1
View File
@@ -9,7 +9,10 @@ use smithay::{
drm::{DrmDevice, DrmDeviceFd, DrmEvent, DrmEventTime, DrmNode, GbmBufferedSurface},
egl::{EGLContext, EGLDisplay},
libinput::{LibinputInputBackend, LibinputSessionInterface},
renderer::{Bind, ImportDma, ImportMemWl, damage::OutputDamageTracker, gles::GlesRenderer},
renderer::{
Bind, Frame, ImportDma, ImportMemWl, Renderer, damage::OutputDamageTracker,
gles::GlesRenderer,
},
session::{Event as SessionEvent, Session, libseat::LibSeatSession},
udev::{UdevBackend, UdevEvent, primary_gpu},
},
@@ -315,6 +318,20 @@ fn render_device(state: &mut Ferese, node: DrmNode) {
&elements,
[0.035, 0.04, 0.055, 1.0],
)?;
if state.process_screencopies(&mut device.renderer, &framebuffer, &device.output) {
let _ = device
.renderer
.render(
&mut framebuffer,
device
.output
.current_mode()
.expect("output has a mode")
.size,
device.output.current_transform(),
)?
.finish()?;
}
let Some(damage) = result.damage.cloned() else {
return Ok(false);
};