Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java
41154 views
1
/*
2
* Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
/*
24
* @test
25
* @key headful
26
* @bug 6646411
27
* @summary Tests that full screen window and its children receive resize
28
event when display mode changes
29
* @author [email protected]: area=Graphics
30
* @run main/othervm NoResizeEventOnDMChangeTest
31
* @run main/othervm -Dsun.java2d.d3d=false NoResizeEventOnDMChangeTest
32
*/
33
34
import java.awt.Canvas;
35
import java.awt.Color;
36
import java.awt.Component;
37
import java.awt.DisplayMode;
38
import java.awt.EventQueue;
39
import java.awt.Frame;
40
import java.awt.Graphics;
41
import java.awt.GraphicsDevice;
42
import java.awt.GraphicsEnvironment;
43
import java.awt.Window;
44
import java.awt.event.ComponentAdapter;
45
import java.awt.event.ComponentEvent;
46
import java.awt.event.WindowAdapter;
47
import java.awt.event.WindowEvent;
48
49
public class NoResizeEventOnDMChangeTest {
50
public static void main(String[] args) {
51
final GraphicsDevice gd = GraphicsEnvironment.
52
getLocalGraphicsEnvironment().getDefaultScreenDevice();
53
54
if (!gd.isFullScreenSupported()) {
55
System.out.println("Full screen not supported, test passed");
56
return;
57
}
58
59
DisplayMode dm = gd.getDisplayMode();
60
final DisplayMode dms[] = new DisplayMode[2];
61
for (DisplayMode dm1 : gd.getDisplayModes()) {
62
if (dm1.getWidth() != dm.getWidth() ||
63
dm1.getHeight() != dm.getHeight())
64
{
65
dms[0] = dm1;
66
break;
67
}
68
}
69
if (dms[0] == null) {
70
System.out.println("Test Passed: all DMs have same dimensions");
71
return;
72
}
73
dms[1] = dm;
74
75
Frame f = new Frame() {
76
@Override
77
public void paint(Graphics g) {
78
g.setColor(Color.red);
79
g.fillRect(0, 0, getWidth(), getHeight());
80
g.setColor(Color.green);
81
g.drawRect(0, 0, getWidth()-1, getHeight()-1);
82
}
83
};
84
f.setUndecorated(true);
85
testFSWindow(gd, dms, f);
86
87
Window w = new Window(f) {
88
@Override
89
public void paint(Graphics g) {
90
g.setColor(Color.magenta);
91
g.fillRect(0, 0, getWidth(), getHeight());
92
g.setColor(Color.cyan);
93
g.drawRect(0, 0, getWidth()-1, getHeight()-1);
94
}
95
};
96
testFSWindow(gd, dms, w);
97
System.out.println("Test Passed.");
98
}
99
100
private static void testFSWindow(final GraphicsDevice gd,
101
final DisplayMode dms[],
102
final Window fsWin)
103
{
104
System.out.println("Testing FS window: "+fsWin);
105
Component c = new Canvas() {
106
@Override
107
public void paint(Graphics g) {
108
g.setColor(Color.blue);
109
g.fillRect(0, 0, getWidth(), getHeight());
110
g.setColor(Color.magenta);
111
g.drawRect(0, 0, getWidth()-1, getHeight()-1);
112
g.setColor(Color.red);
113
g.drawString("FS Window : " + fsWin, 50, 50);
114
DisplayMode dm =
115
getGraphicsConfiguration().getDevice().getDisplayMode();
116
g.drawString("Display Mode: " +
117
dm.getWidth() + "x" + dm.getHeight(), 50, 75);
118
}
119
};
120
fsWin.add("Center", c);
121
fsWin.addWindowListener(new WindowAdapter() {
122
@Override
123
public void windowClosing(WindowEvent e) {
124
fsWin.dispose();
125
if (fsWin.getOwner() != null) {
126
fsWin.getOwner().dispose();
127
}
128
}
129
});
130
131
try {
132
EventQueue.invokeAndWait(new Runnable() {
133
public void run() {
134
gd.setFullScreenWindow(fsWin);
135
}
136
});
137
} catch (Exception ex) {}
138
139
sleep(1000);
140
141
final ResizeEventChecker r1 = new ResizeEventChecker();
142
final ResizeEventChecker r2 = new ResizeEventChecker();
143
144
if (gd.isDisplayChangeSupported()) {
145
fsWin.addComponentListener(r1);
146
c.addComponentListener(r2);
147
for (final DisplayMode dm1 : dms) {
148
try {
149
EventQueue.invokeAndWait(new Runnable() {
150
public void run() {
151
System.err.printf("----------- Setting DM %dx%d:\n",
152
dm1.getWidth(), dm1.getHeight());
153
try {
154
gd.setDisplayMode(dm1);
155
r1.incDmChanges();
156
r2.incDmChanges();
157
} catch (IllegalArgumentException iae) {}
158
}
159
});
160
} catch (Exception ex) {}
161
for (int i = 0; i < 3; i++) {
162
fsWin.repaint();
163
sleep(1000);
164
}
165
}
166
fsWin.removeComponentListener(r1);
167
c.removeComponentListener(r2);
168
}
169
try {
170
EventQueue.invokeAndWait(new Runnable() {
171
public void run() {
172
gd.setFullScreenWindow(null);
173
fsWin.dispose();
174
if (fsWin.getOwner() != null) {
175
fsWin.getOwner().dispose();
176
}
177
}
178
});
179
} catch (Exception ex) {}
180
181
System.out.printf("FS Window: resizes=%d, dm changes=%d\n",
182
r1.getResizes(), r1.getDmChanges());
183
System.out.printf("Component: resizes=%d, dm changes=%d\n",
184
r2.getResizes(), r2.getDmChanges());
185
if (r1.getResizes() < r1.getDmChanges()) {
186
throw new RuntimeException("FS Window didn't receive all resizes!");
187
}
188
if (r2.getResizes() < r2.getDmChanges()) {
189
throw new RuntimeException("Component didn't receive all resizes!");
190
}
191
}
192
193
static void sleep(long ms) {
194
try {
195
Thread.sleep(ms);
196
} catch (InterruptedException ex) {}
197
}
198
static class ResizeEventChecker extends ComponentAdapter {
199
int dmChanges;
200
int resizes;
201
202
@Override
203
public synchronized void componentResized(ComponentEvent e) {
204
System.out.println("Received resize event for "+e.getSource());
205
resizes++;
206
}
207
public synchronized int getResizes() {
208
return resizes;
209
}
210
public synchronized void incDmChanges() {
211
dmChanges++;
212
}
213
public synchronized int getDmChanges() {
214
return dmChanges;
215
}
216
}
217
}
218
219