mirror of
https://github.com/pinnacle-comp/pinnacle.git
synced 2025-01-28 19:58:27 +01:00
Fix black screen on discord on wayland
This commit is contained in:
parent
87a8f29298
commit
44d87d4725
3 changed files with 21 additions and 23 deletions
|
@ -92,6 +92,8 @@ impl XdgShellHandler for State {
|
||||||
// TODO: fix it so that reordering this doesn't break stuff
|
// TODO: fix it so that reordering this doesn't break stuff
|
||||||
self.windows.push(window.clone());
|
self.windows.push(window.clone());
|
||||||
|
|
||||||
|
self.space.map_element(window.clone(), (0, 0), true);
|
||||||
|
|
||||||
let win_clone = window.clone();
|
let win_clone = window.clone();
|
||||||
|
|
||||||
// Let the initial configure happen before updating the windows
|
// Let the initial configure happen before updating the windows
|
||||||
|
@ -115,6 +117,7 @@ impl XdgShellHandler for State {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|data| {
|
|data| {
|
||||||
|
tracing::debug!("UPDATING WINDOWS");
|
||||||
if let Some(focused_output) = data.state.focus_state.focused_output.clone() {
|
if let Some(focused_output) = data.state.focus_state.focused_output.clone() {
|
||||||
data.state.update_windows(&focused_output);
|
data.state.update_windows(&focused_output);
|
||||||
BLOCKER_COUNTER.store(1, std::sync::atomic::Ordering::SeqCst);
|
BLOCKER_COUNTER.store(1, std::sync::atomic::Ordering::SeqCst);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
use itertools::{Either, Itertools};
|
use itertools::{Either, Itertools};
|
||||||
use smithay::{
|
use smithay::{
|
||||||
desktop::{layer_map_for_output, space::SpaceElement},
|
desktop::layer_map_for_output,
|
||||||
output::Output,
|
output::Output,
|
||||||
utils::{Logical, Point, Rectangle, Size},
|
utils::{Logical, Point, Rectangle, Size},
|
||||||
};
|
};
|
||||||
|
@ -462,27 +462,12 @@ impl State {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Some windows just don't want to commit on a timely basis, like VS Code on Wayland,
|
// TODO: don't use the focused output, use the outputs the two windows are on
|
||||||
// unless their sizes change. In this case, if the two windows have the same size,
|
let output = self
|
||||||
// just map them to the other's location instead of going through update_windows().
|
.focus_state
|
||||||
if win1.geometry().size == win2.geometry().size {
|
.focused_output
|
||||||
let win1_loc = self.space.element_location(win1);
|
.clone()
|
||||||
let win2_loc = self.space.element_location(win2);
|
.expect("no focused output");
|
||||||
|
self.update_windows(&output);
|
||||||
if let Some(win1_loc) = win1_loc {
|
|
||||||
if let Some(win2_loc) = win2_loc {
|
|
||||||
self.space.map_element(win1.clone(), win2_loc, false);
|
|
||||||
self.space.map_element(win2.clone(), win1_loc, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// TODO: don't use the focused output, use the outputs the two windows are on
|
|
||||||
let output = self
|
|
||||||
.focus_state
|
|
||||||
.focused_output
|
|
||||||
.clone()
|
|
||||||
.expect("no focused output");
|
|
||||||
self.update_windows(&output);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -277,6 +277,10 @@ where
|
||||||
let mut output_render_elements =
|
let mut output_render_elements =
|
||||||
Vec::<OutputRenderElements<R, WaylandSurfaceRenderElement<R>>>::new();
|
Vec::<OutputRenderElements<R, WaylandSurfaceRenderElement<R>>>::new();
|
||||||
|
|
||||||
|
// let space_render_elements =
|
||||||
|
// smithay::desktop::space::space_render_elements(renderer, [space], output, 1.0)
|
||||||
|
// .expect("failed to get space_render_elements");
|
||||||
|
|
||||||
// Elements render from top to bottom
|
// Elements render from top to bottom
|
||||||
|
|
||||||
output_render_elements.extend(
|
output_render_elements.extend(
|
||||||
|
@ -296,6 +300,12 @@ where
|
||||||
.map(OutputRenderElements::from),
|
.map(OutputRenderElements::from),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// output_render_elements.extend(
|
||||||
|
// space_render_elements
|
||||||
|
// .into_iter()
|
||||||
|
// .map(OutputRenderElements::from),
|
||||||
|
// );
|
||||||
|
|
||||||
output_render_elements
|
output_render_elements
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue