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
if (originalDevice == null) {
                
                Font result = new Font(device, data);
                
                
                 
                if (result.equals(originalFont)) {
                    
                    
                    
                    result.dispose();
                    originalDevice = device;
                    return originalFont;
                }
                
                
                return result;
            }
         
            
            if (originalDevice == device) {
                return originalFont;
            }            
        }
        
        return new Font(device, data);
    }
    /* (non-Javadoc)