Fix random crashes
This (hopefully) fixes the case where some actions cause the panel to die, with the Gdk wayland error message "Error reading events from display: Invalid argument".
By using this site, you agree to have cookies stored on your device, strictly for functional purposes, such as storing your session and preferences.
This (hopefully) fixes the case where some actions cause the panel to die, with the Gdk wayland error message "Error reading events from display: Invalid argument".
soreau,
created on Thursday, 4 September 2025, 14:40:08 (1756996808),
received on Saturday, 6 September 2025, 21:54:28 (1757195668)
Author identity: Scott Moreau <oreaus@gmail.com>
b96a94015441cf1d41643a2fa0ea4a5dc48d2af3
_("NAME") ) def destroy_foreign_toplevel_manager(self): self.foreign_toplevel_manager.destroy() self.wl_globals.remove(self.foreign_toplevel_manager) self.foreign_toplevel_manager = None def on_foreign_toplevel_manager_finish(self, manager: ZwlrForeignToplevelManagerV1): if self.foreign_toplevel_manager: self.destroy_foreign_toplevel_manager() def on_new_toplevel(self, manager: ZwlrForeignToplevelManagerV1, handle: ZwlrForeignToplevelHandleV1): for panel in self.panels:
panel.wl_output_enter(output, output.name) if not output.name.startswith("live-preview"): if self.foreign_toplevel_manager: self.foreign_toplevel_manager.destroy()self.wl_globals.remove(self.foreign_toplevel_manager)self.foreign_toplevel_manager.stop() self.wl_display.roundtrip() if self.foreign_toplevel_manager: self.destroy_foreign_toplevel_manager()self.foreign_toplevel_refresh() self.foreign_toplevel_manager = self.registry.bind(self.foreign_toplevel_manager_id, ZwlrForeignToplevelManagerV1, self.foreign_toplevel_version) self.foreign_toplevel_manager.id = self.foreign_toplevel_manager_id self.wl_globals.append(self.foreign_toplevel_manager) self.foreign_toplevel_manager.dispatcher["toplevel"] = self.on_new_toplevel self.foreign_toplevel_manager.dispatcher["finished"] = lambda *a: print("Toplevel manager finished")self.foreign_toplevel_manager.dispatcher["finished"] = self.on_foreign_toplevel_manager_finishself.wl_display.roundtrip() self.panels_generated = True print(f"Monitor {output.name} ({interface}) connected", file=sys.stderr)