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 149346 Details for
Bug 283586
Traditional Rendering are not disposed after Memory Browser is closed or Debug Session is terminated.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Fix for rendering leaks
MemoryBrowserLeak.txt (text/plain), 4.89 KB, created by
Teodor Madan
on 2009-10-12 04:53:51 EDT
(
hide
)
Description:
Fix for rendering leaks
Filename:
MIME Type:
Creator:
Teodor Madan
Created:
2009-10-12 04:53:51 EDT
Size:
4.89 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.cdt.debug.ui.memory.memorybrowser >Index: src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowser.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/memory/org.eclipse.cdt.debug.ui.memory.memorybrowser/src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowser.java,v >retrieving revision 1.7 >diff -u -r1.7 MemoryBrowser.java >--- src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowser.java 11 Aug 2009 19:37:07 -0000 1.7 >+++ src/org/eclipse/cdt/debug/ui/memory/memorybrowser/MemoryBrowser.java 12 Oct 2009 08:47:34 -0000 >@@ -70,6 +70,8 @@ > import org.eclipse.swt.custom.CTabFolderEvent; > import org.eclipse.swt.custom.CTabItem; > import org.eclipse.swt.custom.StackLayout; >+import org.eclipse.swt.events.DisposeEvent; >+import org.eclipse.swt.events.DisposeListener; > import org.eclipse.swt.events.KeyEvent; > import org.eclipse.swt.events.KeyListener; > import org.eclipse.swt.events.SelectionEvent; >@@ -270,9 +272,12 @@ > public void launchChanged(ILaunch launch) {} > > public void launchRemoved(ILaunch launch) { >- IMemoryBlockRetrieval retrieval = ((IMemoryBlockRetrieval) launch.getAdapter(IMemoryBlockRetrieval.class)); >- if(retrieval != null) >- releaseTabFolder(retrieval); >+ // For CDT launch is not adaptable to memory rendering, but the debug targets do. >+ for (IDebugTarget target : launch.getDebugTargets()) { >+ IMemoryBlockRetrieval retrieval = ((IMemoryBlockRetrieval) target.getAdapter(IMemoryBlockRetrieval.class)); >+ if(retrieval != null) >+ releaseTabFolder(retrieval); >+ } > } > > public IMemoryRenderingContainer getContainer(String id) { >@@ -366,7 +371,7 @@ > > private CTabFolder createTabFolder(Composite parent) > { >- CTabFolder folder = new CTabFolder(parent, SWT.NO_REDRAW_RESIZE | SWT.NO_TRIM | SWT.FLAT); >+ final CTabFolder folder = new CTabFolder(parent, SWT.NO_REDRAW_RESIZE | SWT.NO_TRIM | SWT.FLAT); > > ColorRegistry reg = JFaceResources.getColorRegistry(); > Color c1 = reg.get("org.eclipse.ui.workbench.ACTIVE_TAB_BG_START"), //$NON-NLS-1$ >@@ -376,17 +381,43 @@ > folder.setSimple(PlatformUI.getPreferenceStore().getBoolean(IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS)); > folder.setBorderVisible(true); > >+ // listener to dispose rendering resources for each closed tab > folder.addCTabFolder2Listener(new CTabFolder2Adapter() { > public void close(CTabFolderEvent event) { >- event.doit = false; >+ event.doit = true; > CTabItem item = (CTabItem) event.item; >- IMemoryRenderingContainer container = (IMemoryRenderingContainer) item.getData(KEY_CONTAINER); >- fCurrentContainers.remove( container ); >+ disposeTab(item); >+ } >+ }); >+ >+ // listener to dispose rendering resources for all tab items when view part is closed >+ folder.addDisposeListener(new DisposeListener() { >+ public void widgetDisposed(DisposeEvent e) { >+ for(CTabItem tab : folder.getItems()) { >+ disposeTab(tab); >+ } >+ folder.removeDisposeListener(this); > } > }); > return folder; > } > >+ /** >+ * dispose rendering resources associated with the tab item >+ * @param item >+ */ >+ private void disposeTab(CTabItem item ) { >+ if (item.isDisposed()) >+ return; >+ >+ IMemoryRenderingContainer container = (IMemoryRenderingContainer) item.getData(KEY_CONTAINER); >+ fCurrentContainers.remove( container ); >+ IMemoryRendering rendering = (IMemoryRendering) item.getData(KEY_RENDERING); >+ // always deactivate rendering before disposing it. >+ rendering.deactivated(); >+ rendering.dispose(); >+ } >+ > private CTabItem createTab(CTabFolder tabFolder, int index) { > int swtStyle = SWT.CLOSE; > CTabItem tab = new CTabItem(tabFolder, swtStyle, index); >@@ -505,14 +536,7 @@ > else > { > CTabFolder newFolder = this.createTabFolder(fRenderingsComposite); >- newFolder.addCTabFolder2Listener(new CTabFolder2Adapter() { >- public void close(CTabFolderEvent event) { >- event.doit = true; >- CTabItem item = (CTabItem) event.item; >- IMemoryRenderingContainer container = (IMemoryRenderingContainer) item.getData(KEY_CONTAINER); >- fCurrentContainers.remove( container ); >- } >- }); >+ > newFolder.addSelectionListener(new SelectionListener() > { > public void widgetDefaultSelected(SelectionEvent e) {} >@@ -647,12 +671,15 @@ > if(folder != null) > { > for(CTabItem tab : folder.getItems()) { >- IMemoryRenderingContainer container = (IMemoryRenderingContainer) tab.getData(KEY_CONTAINER); >- fCurrentContainers.remove( container ); >- tab.dispose(); >+ disposeTab(tab); > } > } > fContextFolders.remove(context); >+ folder.dispose(); >+ >+ if (fStackLayout.topControl.equals(folder)) { >+ handleUnsupportedSelection(); >+ } > } > > class SelectionProviderAdapter implements ISelectionProvider {
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
Flags:
cdtdoug
:
iplog+
Actions:
View
|
Diff
Attachments on
bug 283586
: 149346 |
156501
|
156503
|
156707
|
156851