JBR-9301 Vulkan: SwingSet2 crash window server

Clear native peer on windowClosing in Frame object
This commit is contained in:
Alexey Ushakov
2025-09-22 15:42:46 +02:00
committed by jbrbot
parent 2218afd4a1
commit 7d3c3b33b8
3 changed files with 15 additions and 0 deletions

View File

@@ -4373,6 +4373,11 @@ public class Window extends Container implements Accessible {
} }
} }
@Override
public void addWindowListener(Window w, WindowListener listener) {
w.addWindowListener(listener);
}
private static void dumpCounter(final String counterName, final double valPerSecond) { private static void dumpCounter(final String counterName, final double valPerSecond) {
if (USE_COUNTERS) { if (USE_COUNTERS) {
doLog(String.format("%s per second: %.2f", counterName, valPerSecond), doLog(String.format("%s per second: %.2f", counterName, valPerSecond),

View File

@@ -37,6 +37,7 @@ import java.awt.event.InputEvent;
import java.awt.event.InvocationEvent; import java.awt.event.InvocationEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.WindowListener;
import java.awt.image.BufferStrategy; import java.awt.image.BufferStrategy;
import java.awt.peer.ComponentPeer; import java.awt.peer.ComponentPeer;
@@ -337,6 +338,8 @@ public final class AWTAccessor {
double getCounterPerSecond(Window w, String counterName); double getCounterPerSecond(Window w, String counterName);
void dumpStats(Window w, boolean reset, StringBuilder sb); void dumpStats(Window w, boolean reset, StringBuilder sb);
void addWindowListener(Window w, WindowListener listener);
} }
/** /**

View File

@@ -26,6 +26,7 @@
package sun.awt.wl; package sun.awt.wl;
import java.awt.*; import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
import java.awt.peer.FramePeer; import java.awt.peer.FramePeer;
import sun.awt.AWTAccessor; import sun.awt.AWTAccessor;
@@ -42,6 +43,12 @@ public class WLFramePeer extends WLDecoratedPeer implements FramePeer {
super(target, target.isUndecorated(), super(target, target.isUndecorated(),
Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.ICONIFIED), Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.ICONIFIED),
Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.MAXIMIZED_BOTH)); Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.MAXIMIZED_BOTH));
AWTAccessor.getWindowAccessor().addWindowListener(target, new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
getFrame().removeNotify();
}
});
} }
@Override @Override