Bug 559747 - Internal browser with "auto-refresh..." leaks `inotify`
Change-Id: Ia69a471ee41ab8457295e5e3b85c16896103ac23
Signed-off-by: Mickael Istria <mistria@redhat.com>
Signed-off-by: Stephan Wahlbrink <sw@wahlbrink.eu>
diff --git a/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/BrowserViewer.java b/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/BrowserViewer.java
index da65e36..e3382a4 100644
--- a/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/BrowserViewer.java
+++ b/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/BrowserViewer.java
@@ -46,6 +46,7 @@
import org.eclipse.swt.browser.VisibilityWindowAdapter;
import org.eclipse.swt.browser.WindowEvent;
import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionListener;
@@ -273,7 +274,7 @@
text.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
addBrowserListeners();
- //listen();
+ addDisposeListener(this::dispose);
}
/**
@@ -741,10 +742,7 @@
/**
*
*/
- @Override
- public void dispose() {
- super.dispose();
-
+ private void dispose(DisposeEvent event) {
showToolbar = false;
if (busy != null)
@@ -757,6 +755,15 @@
clipboard.dispose();
clipboard=null;
+ if (watcher != null) {
+ try {
+ watcher.close();
+ } catch (IOException e) {
+ WebBrowserUIPlugin.logError(e.getMessage(), e);
+ }
+ }
+ watcher = null;
+
removeSynchronizationListener();
}