Fix black flash on start in glow eframe backend (#7616)

Before:


https://github.com/user-attachments/assets/b31b7a4f-a5f7-45af-bfe0-4c8e174e209f

After:


https://github.com/user-attachments/assets/47544987-ca81-4efb-b778-5ca59b7fc0ac

I think to make things even nicer we could also try calling
request_discard when a window is shown
This commit is contained in:
Lucas Meurer 2025-10-09 11:44:10 +02:00 committed by GitHub
parent d1fcd740de
commit cfca7ebd6d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 1 deletions

View File

@ -563,6 +563,12 @@ impl GlowWinitRunning<'_> {
(raw_input, viewport_ui_cb)
};
// HACK: In order to get the right clear_color, the system theme needs to be set, which
// usually only happens in the `update` call. So we call Options::begin_pass early
// to set the right theme. Without this there would be a black flash on the first frame.
self.integration
.egui_ctx
.options_mut(|opt| opt.begin_pass(&raw_input));
let clear_color = self
.app
.clear_color(&self.integration.egui_ctx.style().visuals);

View File

@ -318,7 +318,9 @@ impl Default for Options {
}
impl Options {
pub(crate) fn begin_pass(&mut self, new_raw_input: &RawInput) {
// Needs to be pub because we need to set the system_theme early in the eframe glow renderer.
#[doc(hidden)]
pub fn begin_pass(&mut self, new_raw_input: &RawInput) {
self.system_theme = new_raw_input.system_theme;
}