Bug 156747 Adopt Resource.getDevice() in the JFace resource managers
SWT has recently added a Resource.getDevice() method. This allows several improvements to be made to the JFace resource managers: 1. The (inefficient and complex) heuristics that detect a device by creating temporary resources can be removed. 2. The one-argument descriptor factories that don't take a Device can be made just as efficient as the two-argument versions. 3. The descriptor factory methods that take a Device can be deprecated, since the second argument is no longer required and the one-argument version is just as efficient.
bundles/org.eclipse.jface/src/org/eclipse/jface/resource/ImageDataImageDescriptor.java
private ImageData data;
    private Image originalImage = null;
    private Device originalDevice = null;
    
    /**
     * Creates an image descriptor, given an image and the device it was created on.
     * 
     * @param originalImage
     * @param originalDevice
     */
    ImageDataImageDescriptor(Image originalImage, Device originalDevice) {
        this(originalImage.getImageData());
        this.originalImage = originalImage;
        this.originalDevice = originalDevice;
    }
    
    /**
     * Creates an image descriptor, given an image.
     * 
     * @param originalImage
     */
    ImageDataImageDescriptor(Image originalImage) {
        this(originalImage.getImageData());
        this.originalImage = originalImage;
    }
    
    /**