summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@yahoo.com>2017-07-23 01:15:13 +0200
committerJoel Klinghed <the_jk@yahoo.com>2017-07-23 01:15:13 +0200
commitc278eac390bd37c5ca8b319ed15605211822c08f (patch)
tree495ed4a1514a590574c54ce3f2cc890da6fdfdb2 /src
parenta3da855cddff3c3c71311af6ce3e7629a459024d (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/gui_gtk.cc6
-rw-r--r--src/gui_qt.cc2
2 files changed, 7 insertions, 1 deletions
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;
}