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
* @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(Object obj) {
        if ((obj.getClass() == ArrayFontDescriptor.class)) {
            ArrayFontDescriptor descr = (ArrayFontDescriptor)obj;
            
            if (descr.originalFont != originalFont) {
                return false;
            }
            
            if (originalFont != null) {
                return true;
            }
            
            if (data.length != descr.data.length) {
                return false;
            }
            
            for (int i = 0; i < data.length; i++) {
                FontData fd = data[i];
                FontData fd2 = descr.data[i];
                
                if (!fd.equals(fd2)) {
                    return false;
                }
            }
            
            return true;
        }