fix(wayland): cursor material queue higher
This commit is contained in:
43
src/core/delta.rs
Normal file
43
src/core/delta.rs
Normal file
@@ -0,0 +1,43 @@
|
||||
use std::ops::{Deref, DerefMut};
|
||||
|
||||
pub struct Delta<T> {
|
||||
value: T,
|
||||
changed: bool,
|
||||
}
|
||||
#[allow(dead_code)]
|
||||
impl<T> Delta<T> {
|
||||
pub fn new(value: T) -> Self {
|
||||
Delta {
|
||||
value,
|
||||
changed: false,
|
||||
}
|
||||
}
|
||||
pub fn peek_delta(&self) -> Option<&T> {
|
||||
self.changed.then_some(&self.value)
|
||||
}
|
||||
pub fn delta(&mut self) -> Option<&mut T> {
|
||||
let delta = self.changed.then_some(&mut self.value);
|
||||
self.changed = false;
|
||||
delta
|
||||
}
|
||||
pub fn value(&self) -> &T {
|
||||
&self.value
|
||||
}
|
||||
pub fn value_mut(&mut self) -> &mut T {
|
||||
self.changed = true;
|
||||
&mut self.value
|
||||
}
|
||||
}
|
||||
impl<T> Deref for Delta<T> {
|
||||
type Target = T;
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.value
|
||||
}
|
||||
}
|
||||
impl<T> DerefMut for Delta<T> {
|
||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||
self.changed = true;
|
||||
&mut self.value
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
pub mod client;
|
||||
pub mod delta;
|
||||
pub mod destroy_queue;
|
||||
pub mod eventloop;
|
||||
pub mod node_collections;
|
||||
|
||||
Reference in New Issue
Block a user