1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-27 15:13:12 -04:00

Fix: a sync viewport cannot render itself he needs his parent to be rendered now when sync viewport needs a redraw that redraw will be redirected to his parent

This commit is contained in:
Konkitoman
2023-08-02 19:58:12 +03:00
parent 34fea8a0e5
commit 141421547b
2 changed files with 16 additions and 0 deletions

View File

@@ -1139,6 +1139,21 @@ mod glow_integration {
let glutin_ctx = self.running.read().as_ref().unwrap().glutin_ctx.clone();
let painter = self.running.read().as_ref().unwrap().painter.clone();
// This onlt will happend when a viewport is sync
// That means that the viewport cannot be rendered by itself and needs his parent to be rendered
{
let win = glutin_ctx.read().windows.get(&viewport_id).unwrap().clone();
if win.read().render.is_none() && viewport_id != 0 {
if let Some(win) = glutin_ctx.read().windows.get(&win.read().parent_id) {
win.read()
.window
.as_ref()
.map(|w| w.read().request_redraw());
}
return vec![];
}
}
let mut window_map = HashMap::default();
for (id, window) in glutin_ctx.read().windows.iter() {
if let Some(win) = &window.read().window {

View File

@@ -26,6 +26,7 @@ fn main() {
ViewportBuilder::default().with_title("Sync rendering!"),
|ctx, viewport_id, parent_viewport_id| {
egui::CentralPanel::default().show(ctx, |ui| {
ui.label(format!("Frame: {}", ui.ctx().frame_nr()));
ui.horizontal(|ui| {
ui.label("Viewport ID: ");
ui.label(format!("{viewport_id}"))