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 99356 Details for
Bug 134646
[Win32] Memory Leak with SWT browser widget
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
A test case showing a big leak, with a method to avoid the leak
BrowserSwitchSWT.java (text/java), 3.89 KB, created by
Christopher Deckers
on 2008-05-08 15:08:54 EDT
(
hide
)
Description:
A test case showing a big leak, with a method to avoid the leak
Filename:
MIME Type:
Creator:
Christopher Deckers
Created:
2008-05-08 15:08:54 EDT
Size:
3.89 KB
patch
obsolete
>package test; > >import org.eclipse.swt.SWT; >import org.eclipse.swt.browser.Browser; >import org.eclipse.swt.browser.LocationAdapter; >import org.eclipse.swt.browser.LocationEvent; >import org.eclipse.swt.events.SelectionAdapter; >import org.eclipse.swt.events.SelectionEvent; >import org.eclipse.swt.layout.FillLayout; >import org.eclipse.swt.layout.GridData; >import org.eclipse.swt.layout.GridLayout; >import org.eclipse.swt.widgets.Button; >import org.eclipse.swt.widgets.Composite; >import org.eclipse.swt.widgets.Control; >import org.eclipse.swt.widgets.Display; >import org.eclipse.swt.widgets.Shell; > >public class BrowserSwitchSWT { > > private static boolean isForcedDisposed; > > public static void main(String[] args) { > final Display display = new Display(); > final Shell shell = new Shell(display); > shell.setLayout(new GridLayout(3, false)); > Button createButton = new Button(shell, SWT.PUSH); > createButton.setText("Re-create"); > GridData gridData = new GridData(); > gridData.horizontalAlignment = GridData.FILL; > gridData.grabExcessHorizontalSpace = true; > createButton.setLayoutData(gridData); > Button destroyButton = new Button(shell, SWT.PUSH); > destroyButton.setText("Destroy"); > gridData = new GridData(); > gridData.horizontalAlignment = GridData.FILL; > gridData.grabExcessHorizontalSpace = true; > destroyButton.setLayoutData(gridData); > final Button forcedButton = new Button(shell, SWT.CHECK); > forcedButton.setText("Forced"); > gridData = new GridData(); > forcedButton.setLayoutData(gridData); > forcedButton.addSelectionListener(new SelectionAdapter() { > @Override > public void widgetSelected(SelectionEvent e) { > isForcedDisposed = forcedButton.getSelection(); > } > }); > final Composite c = new Composite(shell, SWT.NONE); > c.setLayout(new FillLayout()); > gridData = new GridData(); > gridData.horizontalSpan = 3; > gridData.horizontalAlignment = GridData.FILL; > gridData.verticalAlignment = GridData.FILL; > gridData.grabExcessVerticalSpace = true; > gridData.grabExcessHorizontalSpace = true; > c.setLayoutData(gridData); > createButton.addSelectionListener(new SelectionAdapter() { > @Override > public void widgetSelected(SelectionEvent e) { > createBrowser(c); > } > }); > destroyButton.addSelectionListener(new SelectionAdapter() { > @Override > public void widgetSelected(SelectionEvent e) { > Control[] children = c.getChildren(); > if(children.length > 0) { > disposeBrowser((Browser)children[0]); > } > c.layout(); > } > }); > createBrowser(c); > shell.setSize(800, 600); > shell.open(); > while(!shell.isDisposed()) { > if(!display.readAndDispatch()) { > display.sleep(); > } > } > display.dispose(); > } > > private static void createBrowser(Composite c) { > Control[] children = c.getChildren(); > if(children.length > 0) { > disposeBrowser((Browser)children[0]); > } > final Browser browser = new Browser(c, SWT.NONE); > browser.setUrl("http://www.fckeditor.net/demo"); > c.layout(); > } > > private static void disposeBrowser(final Browser browser) { > if(!isForcedDisposed) { > browser.dispose(); > return; > } > browser.addLocationListener(new LocationAdapter() { > @Override > public void changing(LocationEvent e) { > // Does not seem to be called, but let's play it safe. > e.doit = false; > } > }); > browser.refresh(); > // Simulate some sort of dispose so that it is removed from its original parent. > Shell shell = new Shell(); > browser.setParent(shell); > // Defer disposal so that the effect of refresh in cleaning resources happens. > browser.getDisplay().asyncExec(new Runnable() { > public void run() { > browser.dispose(); > } > }); > } > >}
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 Raw
Actions:
View
Attachments on
bug 134646
:
37656
|
38083
| 99356