--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CTrayIcon.java Wed Apr 19 14:28:02 2017 +0200
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CTrayIcon.java Mon Oct 03 19:55:49 2016 +0300
@@ -36,6 +36,7 @@
import java.awt.peer.TrayIconPeer;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.util.concurrent.atomic.AtomicReference;
import static sun.awt.AWTAccessor.*;
@@ -91,10 +92,6 @@
return nativeCreate();
}
- private long getModel() {
- return ptr;
- }
-
private native long nativeCreate();
//invocation from the AWTTrayIcon.m
@@ -168,7 +165,7 @@
@Override
public void setToolTip(String tooltip) {
- nativeSetToolTip(getModel(), tooltip);
+ execute(ptr -> nativeSetToolTip(ptr, tooltip));
}
//adds tooltip to the NSStatusBar's NSButton.
@@ -197,7 +194,12 @@
}
CImage cimage = CImage.getCreator().createFromImage(image);
- setNativeImage(getModel(), cimage.ptr, target.isImageAutoSize());
+ boolean imageAutoSize = target.isImageAutoSize();
+ cimage.execute(imagePtr -> {
+ execute(ptr -> {
+ setNativeImage(ptr, imagePtr, imageAutoSize);
+ });
+ });
}
private native void setNativeImage(final long model, final long nsimage, final boolean autosize);
@@ -377,7 +379,14 @@
private void showMessageDialog() {
Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
- Point2D iconLoc = nativeGetIconLocation(getModel());
+ AtomicReference<Point2D> ref = new AtomicReference<>();
+ execute(ptr -> {
+ ref.set(nativeGetIconLocation(ptr));
+ });
+ Point2D iconLoc = ref.get();
+ if (iconLoc == null) {
+ return;
+ }
int dialogY = (int)iconLoc.getY();
int dialogX = (int)iconLoc.getX();