diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java index 272cedb319f..3d1556a205a 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java @@ -1012,7 +1012,7 @@ private void destroyHandles() { @Override void destroyHandlesExcept(Set zoomLevels) { - destroyHandles(zoom -> !zoomLevels.contains(zoom) || !this.imageProvider.getPreservedZoomLevels().contains(zoom)); + destroyHandles(zoom -> !zoomLevels.contains(zoom) && !this.imageProvider.getPreservedZoomLevels().contains(zoom)); } private void destroyHandles(Predicate filter) { @@ -1930,6 +1930,11 @@ ImageData newImageData(int zoom) { AbstractImageProviderWrapper createCopy(Image image) { return image.new ExistingImageHandleProviderWrapper(handle, zoomForHandle); } + + @Override + public Collection getPreservedZoomLevels() { + return Collections.singleton(zoomForHandle); + } } private abstract class ImageFromImageDataProviderWrapper extends AbstractImageProviderWrapper {