From c278eac390bd37c5ca8b319ed15605211822c08f Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Sun, 23 Jul 2017 01:15:13 +0200 Subject: Fix GUI loopers GTK: If modify() was called more than once inside callback it would leak watches QT: Printed warnings as QSocketNotifier was still enabled when socket was closed --- src/gui_gtk.cc | 6 +++++- src/gui_qt.cc | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gui_gtk.cc b/src/gui_gtk.cc index 4c1cc13..be9fa96 100644 --- a/src/gui_gtk.cc +++ b/src/gui_gtk.cc @@ -1470,7 +1470,11 @@ public: } auto& handle = it->second; if (handle->in_callback_) { - handle->delayed_remove_ = true; + if (handle->delayed_remove_) { + g_source_remove(handle->watch_); + } else { + handle->delayed_remove_ = true; + } } else { g_source_remove(handle->watch_); } diff --git a/src/gui_qt.cc b/src/gui_qt.cc index d54975e..7aa52d3 100644 --- a/src/gui_qt.cc +++ b/src/gui_qt.cc @@ -1248,7 +1248,9 @@ private: callback_(fd, events); in_callback_ = false; if (delayed_delete_) { + read_->setEnabled(false); read_.release()->deleteLater(); + write_->setEnabled(false); write_.release()->deleteLater(); delete this; } -- cgit v1.2.3-70-g09d2