1
0
Fork 0
forked from wry/wry

tree,metal: handle monitor hotplug

This commit is contained in:
Julian Orth 2022-05-19 16:54:13 +02:00
parent e5c0916a25
commit 9db389835d
4 changed files with 447 additions and 192 deletions

View file

@ -2,7 +2,7 @@ use {
crate::{
backend::BackendEvent,
backends::metal::{
video::{MetalDrmDevice, PendingDrmDevice},
video::{MetalDrmDeviceData, PendingDrmDevice},
MetalBackend, MetalDevice, MetalError, MetalInputDevice,
},
dbus::TRUE,
@ -85,7 +85,7 @@ impl MetalBackend {
}
}
fn handle_drm_device_resume(self: &Rc<Self>, dev: &Rc<MetalDrmDevice>, _fd: Rc<OwnedFd>) {
fn handle_drm_device_resume(self: &Rc<Self>, dev: &Rc<MetalDrmDeviceData>, _fd: Rc<OwnedFd>) {
log::info!("Device resumed: {}", dev.dev.devnode.to_bytes().as_bstr());
if let Err(e) = self.resume_drm_device(dev) {
log::error!("Could not resume drm device: {}", ErrorFmt(e));
@ -117,7 +117,7 @@ impl MetalBackend {
}
}
fn handle_drm_device_removed(self: &Rc<Self>, dev: &Rc<MetalDrmDevice>) {
fn handle_drm_device_removed(self: &Rc<Self>, dev: &Rc<MetalDrmDeviceData>) {
log::info!("Device removed: {}", dev.dev.devnode.to_bytes().as_bstr());
}
@ -146,7 +146,7 @@ impl MetalBackend {
}
}
fn handle_drm_device_paused(self: &Rc<Self>, dev: &Rc<MetalDrmDevice>) {
fn handle_drm_device_paused(self: &Rc<Self>, dev: &Rc<MetalDrmDeviceData>) {
log::info!("Device paused: {}", dev.dev.devnode.to_bytes().as_bstr());
}
@ -234,19 +234,6 @@ impl MetalBackend {
}
}
fn handle_drm_change(self: &Rc<Self>, dev: UdevDevice) -> Option<()> {
let dev = match self.device_holder.drm_devices.get(&dev.devnum()) {
Some(dev) => dev,
_ => return None,
};
for connector in dev.connectors.values() {
connector.can_present.set(true);
connector.has_damage.set(true);
connector.schedule_present();
}
None
}
pub fn enumerate_devices(self: &Rc<Self>) -> Result<(), MetalError> {
let mut enumerate = self.udev.create_enumerate()?;
enumerate.add_match_subsystem(INPUT)?;