From ae3875242f1d42e895902769810473d7819169d1 Mon Sep 17 00:00:00 2001 From: Michael Webster Date: Tue, 20 Jun 2017 12:17:49 +0200 Subject: src/arctica-greeter.vala: Disconnect the event filter when the main window is destroyed. Otherwise we can continue to receive events on the filter when we no longer have a backing GdkWindow to act upon (causing a segfault). --- src/arctica-greeter.vala | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/arctica-greeter.vala b/src/arctica-greeter.vala index dc574b5..a964588 100644 --- a/src/arctica-greeter.vala +++ b/src/arctica-greeter.vala @@ -426,6 +426,12 @@ public class ArcticaGreeter root.add_filter (focus_upon_map); } + private void kill_fake_wm () + { + var root = Gdk.get_default_root_window (); + root.remove_filter (focus_upon_map); + } + private static Cairo.XlibSurface? create_root_surface (Gdk.Screen screen) { var visual = screen.get_system_visual (); @@ -503,6 +509,13 @@ public class ArcticaGreeter main_window = new MainWindow (); + main_window.destroy.connect(() => { kill_fake_wm (); }); + main_window.delete_event.connect(() => + { + Gtk.main_quit(); + return false; + }); + Bus.own_name (BusType.SESSION, "org.ayatana.Greeter", BusNameOwnerFlags.NONE); dbus_object = new DialogDBusInterface (); -- cgit v1.2.3