Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 129197 Details for
Bug 269173
Provide a way to find leaked menus (in Sleak?)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Hack for Decorations to write leaked menus to stderr
LeakedMenusToStderr_patch.txt (text/plain), 4.45 KB, created by
Markus Keller
on 2009-03-18 07:54:26 EDT
(
hide
)
Description:
Hack for Decorations to write leaked menus to stderr
Filename:
MIME Type:
Creator:
Markus Keller
Created:
2009-03-18 07:54:26 EDT
Size:
4.45 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.swt >Index: Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java,v >retrieving revision 1.168 >diff -u -r1.168 Decorations.java >--- Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java 3 Mar 2009 22:16:17 -0000 1.168 >+++ Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java 18 Mar 2009 11:41:39 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2000, 2008 IBM Corporation and others. >+ * Copyright (c) 2000, 2009 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -11,9 +11,25 @@ > package org.eclipse.swt.widgets; > > >-import org.eclipse.swt.internal.win32.*; >-import org.eclipse.swt.*; >-import org.eclipse.swt.graphics.*; >+import java.lang.ref.WeakReference; >+ >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.SWTException; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.swt.graphics.ImageData; >+import org.eclipse.swt.graphics.Point; >+import org.eclipse.swt.graphics.Rectangle; >+import org.eclipse.swt.internal.win32.ACCEL; >+import org.eclipse.swt.internal.win32.CREATESTRUCT; >+import org.eclipse.swt.internal.win32.LRESULT; >+import org.eclipse.swt.internal.win32.MENUITEMINFO; >+import org.eclipse.swt.internal.win32.MSG; >+import org.eclipse.swt.internal.win32.OS; >+import org.eclipse.swt.internal.win32.RECT; >+import org.eclipse.swt.internal.win32.STARTUPINFO; >+import org.eclipse.swt.internal.win32.TCHAR; >+import org.eclipse.swt.internal.win32.WINDOWPLACEMENT; >+import org.eclipse.swt.internal.win32.WINDOWPOS; > > /** > * Instances of this class provide the appearance and >@@ -96,10 +112,26 @@ > */ > > public class Decorations extends Canvas { >+ >+ private static class WeakMenuReference extends WeakReference { >+ private Error error; >+ >+ public WeakMenuReference(Object r) { >+ super(r); >+ error = new Error(); >+ } >+ >+ public boolean enqueue() { >+ System.err.println("Decorations.WeakMenuReference.enqueue(): " + get()); //$NON-NLS-1$ >+ error.printStackTrace(); >+ return super.enqueue(); >+ } >+ } >+ > Image image, smallImage, largeImage; > Image [] images; > Menu menuBar; >- Menu [] menus; >+ WeakMenuReference [] menus; > Control savedFocus; > Button defaultButton, saveDefault; > int swFlags, nAccel; >@@ -201,15 +233,15 @@ > } > > void addMenu (Menu menu) { >- if (menus == null) menus = new Menu [4]; >+ if (menus == null) menus = new WeakMenuReference[4]; > for (int i=0; i<menus.length; i++) { > if (menus [i] == null) { >- menus [i] = menu; >+ menus [i] = new WeakMenuReference(menu); > return; > } > } >- Menu [] newMenus = new Menu [menus.length + 4]; >- newMenus [menus.length] = menu; >+ WeakMenuReference [] newMenus = new WeakMenuReference [menus.length + 4]; >+ newMenus [menus.length] = new WeakMenuReference(menu); > System.arraycopy (menus, 0, newMenus, 0, menus.length); > menus = newMenus; > } >@@ -450,7 +482,8 @@ > Menu findMenu (int /*long*/ hMenu) { > if (menus == null) return null; > for (int i=0; i<menus.length; i++) { >- Menu menu = menus [i]; >+ WeakMenuReference weakMenuReference= menus [i]; >+ Menu menu = weakMenuReference == null ? null : (Menu) weakMenuReference.get(); > if (menu != null && hMenu == menu.handle) return menu; > } > return null; >@@ -772,8 +805,11 @@ > super.releaseChildren (destroy); > if (menus != null) { > for (int i=0; i<menus.length; i++) { >- Menu menu = menus [i]; >+ WeakMenuReference weakMenuReference= menus [i]; >+ Menu menu = weakMenuReference == null ? null : (Menu) weakMenuReference.get(); > if (menu != null && !menu.isDisposed ()) { >+ System.err.println("Decorations releases menu: " + menu); //$NON-NLS-1$ >+ weakMenuReference.error.printStackTrace(); > menu.dispose (); > } > } >@@ -796,7 +832,9 @@ > void removeMenu (Menu menu) { > if (menus == null) return; > for (int i=0; i<menus.length; i++) { >- if (menus [i] == menu) { >+ WeakMenuReference weakMenuReference= menus [i]; >+ Menu menu2 = weakMenuReference == null ? null : (Menu) weakMenuReference.get(); >+ if (menu2 == menu) { > menus [i] = null; > return; > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 269173
: 129197