Skip to content

Commit 20ec82f

Browse files
Changing the logic to destroy temporary handle
1 parent 20f6dbc commit 20ec82f

File tree

1 file changed

+18
-10
lines changed
  • bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics

1 file changed

+18
-10
lines changed

bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2080,14 +2080,10 @@ public static Image win32_new(Device device, int type, long handle, int nativeZo
20802080
}
20812081

20822082
private void destroyHandle(int zoom) {
2083-
zoomLevelToImageHandle.entrySet().removeIf(entry -> {
2084-
final Integer zoomKey = entry.getKey();
2085-
if (zoom == zoomKey) {
2086-
destroyHandle(entry.getValue().handle);
2087-
return true;
2088-
}
2089-
return false;
2090-
});
2083+
ImageHandle imageHandle = zoomLevelToImageHandle.remove(zoom);
2084+
if (imageHandle != null) {
2085+
destroyHandle(imageHandle.handle);
2086+
}
20912087
}
20922088

20932089
private abstract class AbstractImageProviderWrapper {
@@ -2124,6 +2120,7 @@ private class ImageFileNameProviderWrapper extends AbstractImageProviderWrapper
21242120
* ImageFileNameProvider to provide file names at various Zoom levels
21252121
*/
21262122
private final ImageFileNameProvider provider;
2123+
private boolean isDestroyed;
21272124
private int width;
21282125
private int height;
21292126
private final static int BASE_ZOOM = 100;
@@ -2186,7 +2183,12 @@ ImageFileNameProviderWrapper createCopy(Image image) {
21862183

21872184
@Override
21882185
boolean isDisposed() {
2189-
return false;
2186+
return this.isDestroyed;
2187+
}
2188+
2189+
@Override
2190+
protected void destroy() {
2191+
this.isDestroyed = true;
21902192
}
21912193
}
21922194

@@ -2198,6 +2200,7 @@ private class ImageDataProviderWrapper extends AbstractImageProviderWrapper {
21982200
private final ImageDataProvider provider;
21992201
private int width;
22002202
private int height;
2203+
private boolean isDestroyed;
22012204
private final static int BASE_ZOOM = 100;
22022205

22032206
ImageDataProviderWrapper(ImageDataProvider provider) {
@@ -2232,7 +2235,12 @@ ImageHandle getImageMetadata(int zoom) {
22322235

22332236
@Override
22342237
boolean isDisposed() {
2235-
return false;
2238+
return this.isDestroyed;
2239+
}
2240+
2241+
@Override
2242+
protected void destroy() {
2243+
this.isDestroyed = true;
22362244
}
22372245

22382246
@Override

0 commit comments

Comments
 (0)