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/ArrayFontDescriptor.java
return false;
    }
    
    /* (non-Javadoc)
     * @see java.lang.Object#hashCode()
     */
    public int hashCode() {
        if (originalFont != null) {
            return originalFont.hashCode();
        }
        
        int code = 0;
        
        for (int i = 0; i < data.length; i++) {
            FontData fd = data[i];
            code += fd.hashCode();
        }
        return code;
    }
    /* (non-Javadoc)
     * @see org.eclipse.jface.resource.FontDescriptor#destroyFont(org.eclipse.swt.graphics.Font)
     */
    public void destroyFont(Font previouslyCreatedFont) {
        if (previouslyCreatedFont == originalFont) {
            return;
        }
        previouslyCreatedFont.dispose();
    }
}