element: Refactor element acquisition to be push based
This commit is contained in:
parent
178c6593dc
commit
e4c0716951
18 changed files with 1096 additions and 1137 deletions
|
|
@ -35,7 +35,7 @@ use smithay::{
|
|||
renderer::{
|
||||
ImportMem, Renderer,
|
||||
element::{
|
||||
AsRenderElements, Kind,
|
||||
Kind,
|
||||
memory::{MemoryRenderBuffer, MemoryRenderBufferRenderElement},
|
||||
},
|
||||
},
|
||||
|
|
@ -910,21 +910,18 @@ impl<P: Program + Send + 'static> SpaceElement for IcedElement<P> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<P, R> AsRenderElements<R> for IcedElement<P>
|
||||
where
|
||||
P: Program + Send + 'static,
|
||||
R: Renderer + ImportMem,
|
||||
R::TextureId: Send + Clone + 'static,
|
||||
{
|
||||
type RenderElement = MemoryRenderBufferRenderElement<R>;
|
||||
|
||||
fn render_elements<C: From<Self::RenderElement>>(
|
||||
impl<P: Program + Send + 'static> IcedElement<P> {
|
||||
pub fn push_render_elements<R>(
|
||||
&self,
|
||||
renderer: &mut R,
|
||||
location: Point<i32, Physical>,
|
||||
mut scale: Scale<f64>,
|
||||
alpha: f32,
|
||||
) -> Vec<C> {
|
||||
push: &mut dyn FnMut(MemoryRenderBufferRenderElement<R>),
|
||||
) where
|
||||
R: Renderer + ImportMem,
|
||||
R::TextureId: Send + Clone + 'static,
|
||||
{
|
||||
let mut internal = self.0.lock().unwrap();
|
||||
// makes partial borrows easier
|
||||
let internal_ref = &mut *internal;
|
||||
|
|
@ -1055,11 +1052,10 @@ where
|
|||
Kind::Unspecified,
|
||||
) {
|
||||
Ok(buffer) => {
|
||||
return vec![C::from(buffer)];
|
||||
push(buffer);
|
||||
}
|
||||
Err(err) => tracing::warn!("What? {:?}", err),
|
||||
}
|
||||
}
|
||||
Vec::new()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue