mirror of
https://github.com/emilk/egui.git
synced 2026-08-31 22:00:03 -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:
@@ -1139,6 +1139,21 @@ mod glow_integration {
|
|||||||
let glutin_ctx = self.running.read().as_ref().unwrap().glutin_ctx.clone();
|
let glutin_ctx = self.running.read().as_ref().unwrap().glutin_ctx.clone();
|
||||||
let painter = self.running.read().as_ref().unwrap().painter.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();
|
let mut window_map = HashMap::default();
|
||||||
for (id, window) in glutin_ctx.read().windows.iter() {
|
for (id, window) in glutin_ctx.read().windows.iter() {
|
||||||
if let Some(win) = &window.read().window {
|
if let Some(win) = &window.read().window {
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ fn main() {
|
|||||||
ViewportBuilder::default().with_title("Sync rendering!"),
|
ViewportBuilder::default().with_title("Sync rendering!"),
|
||||||
|ctx, viewport_id, parent_viewport_id| {
|
|ctx, viewport_id, parent_viewport_id| {
|
||||||
egui::CentralPanel::default().show(ctx, |ui| {
|
egui::CentralPanel::default().show(ctx, |ui| {
|
||||||
|
ui.label(format!("Frame: {}", ui.ctx().frame_nr()));
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
ui.label("Viewport ID: ");
|
ui.label("Viewport ID: ");
|
||||||
ui.label(format!("{viewport_id}"))
|
ui.label(format!("{viewport_id}"))
|
||||||
|
|||||||
Reference in New Issue
Block a user