mirror of https://github.com/wayvr-org/wayvr.git
wvr_server: fix mouse cursor not rendering on the very top layer
This commit is contained in:
parent
dbda3de755
commit
0abebddffe
|
|
@ -215,6 +215,19 @@ impl ScreenPipeline {
|
|||
mouse: Option<&MouseMeta>,
|
||||
app: &mut AppState,
|
||||
rdr: &mut RenderResources,
|
||||
) -> anyhow::Result<()> {
|
||||
self.render_screen(image, app, rdr)?;
|
||||
if let Some(mouse) = mouse {
|
||||
self.render_mouse(mouse, rdr)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn render_screen(
|
||||
&mut self,
|
||||
image: Arc<ImageView>,
|
||||
app: &mut AppState,
|
||||
rdr: &mut RenderResources,
|
||||
) -> anyhow::Result<()> {
|
||||
self.ensure_depth(app, rdr.cmd_bufs.len())?;
|
||||
|
||||
|
|
@ -226,23 +239,31 @@ impl ScreenPipeline {
|
|||
.update_sampler(0, image.clone(), app.gfx.texture_filter)?;
|
||||
|
||||
cmd_buf.run_ref(¤t.pass)?;
|
||||
}
|
||||
|
||||
if let Some(mouse) = mouse.as_ref() {
|
||||
let size = CURSOR_SIZE * self.extentf[1];
|
||||
let half_size = size * 0.5;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
upload_quad_vertices(
|
||||
&mut self.mouse.buf_vert,
|
||||
self.extentf[0],
|
||||
self.extentf[1],
|
||||
mouse.x.mul_add(self.extentf[0], -half_size),
|
||||
mouse.y.mul_add(self.extentf[1], -half_size),
|
||||
size,
|
||||
size,
|
||||
)?;
|
||||
pub fn render_mouse(
|
||||
&mut self,
|
||||
mouse: &MouseMeta,
|
||||
rdr: &mut RenderResources,
|
||||
) -> anyhow::Result<()> {
|
||||
for cmd_buf in rdr.cmd_bufs.iter_mut() {
|
||||
let size = CURSOR_SIZE * self.extentf[1];
|
||||
let half_size = size * 0.5;
|
||||
|
||||
cmd_buf.run_ref(&self.mouse.pass)?;
|
||||
}
|
||||
upload_quad_vertices(
|
||||
&mut self.mouse.buf_vert,
|
||||
self.extentf[0],
|
||||
self.extentf[1],
|
||||
mouse.x.mul_add(self.extentf[0], -half_size),
|
||||
mouse.y.mul_add(self.extentf[1], -half_size),
|
||||
size,
|
||||
size,
|
||||
)?;
|
||||
|
||||
cmd_buf.run_ref(&self.mouse.pass)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
|
|
|||
|
|
@ -645,7 +645,7 @@ impl OverlayBackend for WvrWindowBackend {
|
|||
self.pipeline
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.render(image, self.mouse.as_ref(), app, rdr)?;
|
||||
.render_screen(image, app, rdr)?;
|
||||
|
||||
for surface in &self.surfaces {
|
||||
self.render_subsurface(app, rdr, surface)?;
|
||||
|
|
@ -657,6 +657,10 @@ impl OverlayBackend for WvrWindowBackend {
|
|||
callback_surfaces.push(&popup.surface_id);
|
||||
}
|
||||
|
||||
if let Some(mouse) = self.mouse.as_ref() {
|
||||
self.pipeline.as_mut().unwrap().render_mouse(mouse, rdr)?;
|
||||
}
|
||||
|
||||
// frame callbacks for toplevel + subsurf + popup
|
||||
if let Some(wvr_server) = app.wvr_server.as_mut() {
|
||||
let state = &mut wvr_server.manager.state;
|
||||
|
|
|
|||
Loading…
Reference in New Issue