summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Northover <steve>2006-01-13 16:53:36 +0000
committerSteve Northover <steve>2006-01-13 16:53:36 +0000
commit12e45fb54f284260e5a8be971116e65fb533176e (patch)
tree9238a4a45d4ac37ae469dab82f8ffb819e6e4c6c
parent25225198f7900abb357a7dab01d4951e90a13ede (diff)
downloadeclipse.platform.swt-12e45fb54f284260e5a8be971116e65fb533176e.tar.gz
eclipse.platform.swt-12e45fb54f284260e5a8be971116e65fb533176e.tar.xz
eclipse.platform.swt-12e45fb54f284260e5a8be971116e65fb533176e.zip
122428 - Performance on OS X still degrades on 10.4.3
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java
index e8ffab9518..cc54d4e9e4 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java
@@ -2764,6 +2764,7 @@ int mouseProc (int nextHandler, int theEvent, int userData) {
}
int mouseHoverProc (int id, int handle) {
+ OS.RemoveEventLoopTimer (id);
mouseHoverID = 0;
mouseMoved = false;
if (currentControl != null && !currentControl.isDisposed ()) {
@@ -2959,6 +2960,19 @@ protected void release () {
void releaseDisplay () {
disposeWindows ();
+ /* Release Timers */
+ if (caretID != 0) OS.RemoveEventLoopTimer (caretID);
+ if (mouseHoverID != 0) OS.RemoveEventLoopTimer (mouseHoverID);
+ caretID = mouseHoverID = 0;
+ if (timerIds != null) {
+ for (int i=0; i<timerIds.length; i++) {
+ if (timerIds [i] != 0 && timerIds [i] != -1) {
+ OS.RemoveEventLoopTimer (timerIds [i]);
+ }
+ }
+ }
+ timerIds = null;
+
actionCallback.dispose ();
appleEventCallback.dispose ();
caretCallback.dispose ();
@@ -3847,6 +3861,7 @@ public void timerExec (int milliseconds, Runnable runnable) {
}
int timerProc (int id, int index) {
+ OS.RemoveEventLoopTimer (id);
if (timerList == null) return 0;
if (0 <= index && index < timerList.length) {
if (allowTimers) {