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/ImageDescriptor.java
* @param data contents of the image
     * @return newly created image descriptor
     */
    public static ImageDescriptor createFromImageData(ImageData data) {
        return new ImageDataImageDescriptor(data);
    }
    
    /**
     * Creates and returns a new image descriptor for the given image. Note 
     * that disposing the original Image will cause the descriptor to become invalid.  
     * 
     * <p>
     * Performance note: If the device that created the Image is known, it 
     * is more efficient to use createFromImage(Image, Device).
     * This method should only be used in those rare situations where
     * the device is unknown.
     * </p>
     * 
     * @since 3.1 
     *
     * @param img image to create
     * @return a newly created image descriptor
     */
    public static ImageDescriptor createFromImage(Image img) {
        return new ImageDataImageDescriptor(img);
    }
    
    /**
     * Creates an ImageDescriptor based on the given original descriptor, but with additional
     * SWT flags.