render: Fix shader obj leak
This commit is contained in:
parent
a0f8c4ed99
commit
7684cd1b2c
2 changed files with 6 additions and 6 deletions
|
|
@ -49,7 +49,7 @@ use smithay::{
|
||||||
constrain_render_elements, ConstrainAlign, ConstrainScaleBehavior,
|
constrain_render_elements, ConstrainAlign, ConstrainScaleBehavior,
|
||||||
CropRenderElement, Relocate, RelocateRenderElement, RescaleRenderElement,
|
CropRenderElement, Relocate, RelocateRenderElement, RescaleRenderElement,
|
||||||
},
|
},
|
||||||
Element, Id, Kind, RenderElement,
|
Element, Id, Kind, RenderElement, WeakId,
|
||||||
},
|
},
|
||||||
gles::{
|
gles::{
|
||||||
element::{PixelShaderElement, TextureShaderElement},
|
element::{PixelShaderElement, TextureShaderElement},
|
||||||
|
|
@ -132,7 +132,7 @@ pub enum Usage {
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub enum Key {
|
pub enum Key {
|
||||||
Static(Id),
|
Static(WeakId),
|
||||||
Group(Weak<()>),
|
Group(Weak<()>),
|
||||||
Window(Usage, CosmicMappedKey),
|
Window(Usage, CosmicMappedKey),
|
||||||
}
|
}
|
||||||
|
|
@ -166,7 +166,7 @@ impl From<WindowGroup> for Key {
|
||||||
}
|
}
|
||||||
impl From<Id> for Key {
|
impl From<Id> for Key {
|
||||||
fn from(id: Id) -> Self {
|
fn from(id: Id) -> Self {
|
||||||
Key::Static(id)
|
Key::Static(id.downgrade())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -236,7 +236,7 @@ impl IndicatorShader {
|
||||||
user_data.insert_if_missing(|| IndicatorCache::new(HashMap::new()));
|
user_data.insert_if_missing(|| IndicatorCache::new(HashMap::new()));
|
||||||
let mut cache = user_data.get::<IndicatorCache>().unwrap().borrow_mut();
|
let mut cache = user_data.get::<IndicatorCache>().unwrap().borrow_mut();
|
||||||
cache.retain(|k, _| match k {
|
cache.retain(|k, _| match k {
|
||||||
Key::Static(_) => true,
|
Key::Static(w) => w.upgrade().is_some(),
|
||||||
Key::Group(w) => w.upgrade().is_some(),
|
Key::Group(w) => w.upgrade().is_some(),
|
||||||
Key::Window(_, w) => w.alive(),
|
Key::Window(_, w) => w.alive(),
|
||||||
});
|
});
|
||||||
|
|
@ -318,7 +318,7 @@ impl BackdropShader {
|
||||||
user_data.insert_if_missing(|| BackdropCache::new(HashMap::new()));
|
user_data.insert_if_missing(|| BackdropCache::new(HashMap::new()));
|
||||||
let mut cache = user_data.get::<BackdropCache>().unwrap().borrow_mut();
|
let mut cache = user_data.get::<BackdropCache>().unwrap().borrow_mut();
|
||||||
cache.retain(|k, _| match k {
|
cache.retain(|k, _| match k {
|
||||||
Key::Static(_) => true,
|
Key::Static(w) => w.upgrade().is_some(),
|
||||||
Key::Group(a) => a.upgrade().is_some(),
|
Key::Group(a) => a.upgrade().is_some(),
|
||||||
Key::Window(_, w) => w.alive(),
|
Key::Window(_, w) => w.alive(),
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -5286,7 +5286,7 @@ where
|
||||||
swap_elements.push(CosmicMappedRenderElement::FocusIndicator(
|
swap_elements.push(CosmicMappedRenderElement::FocusIndicator(
|
||||||
IndicatorShader::focus_element(
|
IndicatorShader::focus_element(
|
||||||
renderer,
|
renderer,
|
||||||
Key::Static(swapping_stack_surface_id.clone()),
|
Key::from(swapping_stack_surface_id.clone()),
|
||||||
swap_geo,
|
swap_geo,
|
||||||
4,
|
4,
|
||||||
transition.unwrap_or(1.0),
|
transition.unwrap_or(1.0),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue