atomic: clear broken resources on resume
This commit is contained in:
parent
9bbd9edb0c
commit
f3dabe2cea
|
@ -16,7 +16,7 @@ use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use super::{AtomicDrmDevice, AtomicDrmSurfaceInternal, Dev};
|
use super::{AtomicDrmDevice, AtomicDrmSurfaceInternal, Dev};
|
||||||
use crate::backend::drm::{common::Error, DevPath};
|
use crate::backend::drm::{common::Error, DevPath, Surface};
|
||||||
use crate::backend::session::{AsSessionObserver, SessionObserver};
|
use crate::backend::session::{AsSessionObserver, SessionObserver};
|
||||||
|
|
||||||
/// [`SessionObserver`](SessionObserver)
|
/// [`SessionObserver`](SessionObserver)
|
||||||
|
@ -164,6 +164,18 @@ impl<A: AsRawFd + 'static> AtomicDrmDeviceObserver<A> {
|
||||||
// lets force a non matching state
|
// lets force a non matching state
|
||||||
current.connectors.clear();
|
current.connectors.clear();
|
||||||
current.mode = unsafe { std::mem::zeroed() };
|
current.mode = unsafe { std::mem::zeroed() };
|
||||||
|
|
||||||
|
// recreate property blob
|
||||||
|
let mode = {
|
||||||
|
let pending = surface.pending.read().unwrap();
|
||||||
|
pending.mode.clone()
|
||||||
|
};
|
||||||
|
surface.use_mode(mode)?;
|
||||||
|
|
||||||
|
// drop cursor state
|
||||||
|
surface.cursor.position.set(None);
|
||||||
|
surface.cursor.hotspot.set((0,0));
|
||||||
|
surface.cursor.framebuffer.set(None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,9 +20,9 @@ use crate::backend::graphics::CursorBackend;
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||||
pub struct CursorState {
|
pub struct CursorState {
|
||||||
position: Cell<Option<(u32, u32)>>,
|
pub position: Cell<Option<(u32, u32)>>,
|
||||||
hotspot: Cell<(u32, u32)>,
|
pub hotspot: Cell<(u32, u32)>,
|
||||||
framebuffer: Cell<Option<framebuffer::Handle>>,
|
pub framebuffer: Cell<Option<framebuffer::Handle>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, Clone)]
|
#[derive(Debug, PartialEq, Eq, Clone)]
|
||||||
|
|
Loading…
Reference in New Issue