--- old/src/share/classes/sun/awt/datatransfer/SunClipboard.java 2014-05-22 19:39:55.000000000 +0400
+++ new/src/share/classes/sun/awt/datatransfer/SunClipboard.java 2014-05-22 19:39:55.000000000 +0400
@@ -40,7 +40,7 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-import java.util.Objects;
+import java.util.Arrays;
import java.util.Set;
import java.util.HashSet;
@@ -74,11 +74,11 @@
private volatile int numberOfFlavorListeners = 0;
/**
- * A set of DataFlavor
s that is available on
+ * A set of formats that is available on
* this clipboard. It is used for tracking changes
* of DataFlavor
s available on this clipboard.
*/
- private volatile Set currentDataFlavors;
+ private volatile long[] currentDataFormats;
public SunClipboard(String name) {
@@ -358,16 +358,7 @@
flavorListeners.add(listener);
if (numberOfFlavorListeners++ == 0) {
- long[] currentFormats = null;
- try {
- openClipboard(null);
- currentFormats = getClipboardFormats();
- } catch (IllegalStateException exc) {
- } finally {
- closeClipboard();
- }
- currentDataFlavors = formatArrayAsDataFlavorSet(currentFormats);
-
+ currentDataFormats = getClipboardFormatsOpenClose();
registerClipboardViewerChecked();
}
}
@@ -383,7 +374,7 @@
}
if (flavorListeners.remove(listener) && --numberOfFlavorListeners == 0) {
unregisterClipboardViewerChecked();
- currentDataFlavors = null;
+ currentDataFormats = null;
}
}
@@ -417,10 +408,10 @@
* this clipboard
*/
public void checkChange(long[] formats) {
- Set prevDataFlavors = currentDataFlavors;
- currentDataFlavors = formatArrayAsDataFlavorSet(formats);
+ long[] prevDataFlavors = currentDataFormats;
+ currentDataFormats = formats;
- if (Objects.equals(prevDataFlavors, currentDataFlavors)) {
+ if (Arrays.equals(prevDataFlavors, currentDataFormats)) {
// we've been able to successfully get available on the clipboard
// DataFlavors this and previous time and they are coincident;
// don't notify