35 import java.awt.datatransfer.Clipboard;
36 import java.awt.TrayIcon;
37 import java.beans.PropertyChangeListener;
38 import java.security.AccessController;
39 import java.security.PrivilegedAction;
40
41 import sun.awt.AWTAccessor;
42 import sun.awt.AppContext;
43 import sun.awt.AWTAutoShutdown;
44 import sun.awt.AWTPermissions;
45 import sun.awt.AppContext;
46 import sun.awt.LightweightFrame;
47 import sun.awt.SunToolkit;
48 import sun.awt.util.ThreadGroupUtils;
49 import sun.awt.Win32GraphicsDevice;
50 import sun.awt.Win32GraphicsEnvironment;
51 import sun.awt.datatransfer.DataTransferer;
52 import sun.java2d.d3d.D3DRenderQueue;
53 import sun.java2d.opengl.OGLRenderQueue;
54
55 import sun.misc.ManagedLocalsThread;
56 import sun.print.PrintJob2D;
57
58 import java.awt.dnd.DragSource;
59 import java.awt.dnd.DragGestureListener;
60 import java.awt.dnd.DragGestureEvent;
61 import java.awt.dnd.DragGestureRecognizer;
62 import java.awt.dnd.MouseDragGestureRecognizer;
63 import java.awt.dnd.InvalidDnDOperationException;
64 import java.awt.dnd.peer.DragSourceContextPeer;
65
66 import java.util.Hashtable;
67 import java.util.Locale;
68 import java.util.Map;
69 import java.util.Properties;
70
71 import sun.awt.util.PerformanceLogger;
72 import sun.font.FontManager;
73 import sun.font.FontManagerFactory;
74 import sun.font.SunFontManager;
75 import sun.util.logging.PlatformLogger;
239 public WToolkit() {
240 // Startup toolkit threads
241 if (PerformanceLogger.loggingEnabled()) {
242 PerformanceLogger.setTime("WToolkit construction");
243 }
244
245 sun.java2d.Disposer.addRecord(anchor, new ToolkitDisposer());
246
247 /*
248 * Fix for 4701990.
249 * AWTAutoShutdown state must be changed before the toolkit thread
250 * starts to avoid race condition.
251 */
252 AWTAutoShutdown.notifyToolkitThreadBusy();
253
254 // Find a root TG and attach toolkit thread to it
255 ThreadGroup rootTG = AccessController.doPrivileged(
256 (PrivilegedAction<ThreadGroup>) ThreadGroupUtils::getRootThreadGroup);
257 if (!startToolkitThread(this, rootTG)) {
258 String name = "AWT-Windows";
259 Thread toolkitThread = new ManagedLocalsThread(rootTG, this, name);
260 toolkitThread.setDaemon(true);
261 toolkitThread.start();
262 }
263
264 try {
265 synchronized(this) {
266 while(!inited) {
267 wait();
268 }
269 }
270 } catch (InterruptedException x) {
271 // swallow the exception
272 }
273
274 // Enabled "live resizing" by default. It remains controlled
275 // by the native system though.
276 setDynamicLayout(true);
277
278 areExtraMouseButtonsEnabled = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons", "true"));
279 //set system property if not yet assigned
280 System.setProperty("sun.awt.enableExtraMouseButtons", ""+areExtraMouseButtonsEnabled);
281 setExtraMouseButtonsEnabledNative(areExtraMouseButtonsEnabled);
282 }
283
284 private void registerShutdownHook() {
285 AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
286 Thread shutdown = new ManagedLocalsThread(
287 ThreadGroupUtils.getRootThreadGroup(), this::shutdown);
288 shutdown.setContextClassLoader(null);
289 Runtime.getRuntime().addShutdownHook(shutdown);
290 return null;
291 });
292 }
293
294 @Override
295 public void run() {
296 AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
297 Thread.currentThread().setContextClassLoader(null);
298 Thread.currentThread().setPriority(Thread.NORM_PRIORITY + 1);
299 return null;
300 });
301
302 boolean startPump = init();
303
304 if (startPump) {
305 registerShutdownHook();
306 }
307
|
35 import java.awt.datatransfer.Clipboard;
36 import java.awt.TrayIcon;
37 import java.beans.PropertyChangeListener;
38 import java.security.AccessController;
39 import java.security.PrivilegedAction;
40
41 import sun.awt.AWTAccessor;
42 import sun.awt.AppContext;
43 import sun.awt.AWTAutoShutdown;
44 import sun.awt.AWTPermissions;
45 import sun.awt.AppContext;
46 import sun.awt.LightweightFrame;
47 import sun.awt.SunToolkit;
48 import sun.awt.util.ThreadGroupUtils;
49 import sun.awt.Win32GraphicsDevice;
50 import sun.awt.Win32GraphicsEnvironment;
51 import sun.awt.datatransfer.DataTransferer;
52 import sun.java2d.d3d.D3DRenderQueue;
53 import sun.java2d.opengl.OGLRenderQueue;
54
55 import sun.print.PrintJob2D;
56
57 import java.awt.dnd.DragSource;
58 import java.awt.dnd.DragGestureListener;
59 import java.awt.dnd.DragGestureEvent;
60 import java.awt.dnd.DragGestureRecognizer;
61 import java.awt.dnd.MouseDragGestureRecognizer;
62 import java.awt.dnd.InvalidDnDOperationException;
63 import java.awt.dnd.peer.DragSourceContextPeer;
64
65 import java.util.Hashtable;
66 import java.util.Locale;
67 import java.util.Map;
68 import java.util.Properties;
69
70 import sun.awt.util.PerformanceLogger;
71 import sun.font.FontManager;
72 import sun.font.FontManagerFactory;
73 import sun.font.SunFontManager;
74 import sun.util.logging.PlatformLogger;
238 public WToolkit() {
239 // Startup toolkit threads
240 if (PerformanceLogger.loggingEnabled()) {
241 PerformanceLogger.setTime("WToolkit construction");
242 }
243
244 sun.java2d.Disposer.addRecord(anchor, new ToolkitDisposer());
245
246 /*
247 * Fix for 4701990.
248 * AWTAutoShutdown state must be changed before the toolkit thread
249 * starts to avoid race condition.
250 */
251 AWTAutoShutdown.notifyToolkitThreadBusy();
252
253 // Find a root TG and attach toolkit thread to it
254 ThreadGroup rootTG = AccessController.doPrivileged(
255 (PrivilegedAction<ThreadGroup>) ThreadGroupUtils::getRootThreadGroup);
256 if (!startToolkitThread(this, rootTG)) {
257 String name = "AWT-Windows";
258 Thread toolkitThread = new Thread(rootTG, this, name, 0, false);
259 toolkitThread.setDaemon(true);
260 toolkitThread.start();
261 }
262
263 try {
264 synchronized(this) {
265 while(!inited) {
266 wait();
267 }
268 }
269 } catch (InterruptedException x) {
270 // swallow the exception
271 }
272
273 // Enabled "live resizing" by default. It remains controlled
274 // by the native system though.
275 setDynamicLayout(true);
276
277 areExtraMouseButtonsEnabled = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons", "true"));
278 //set system property if not yet assigned
279 System.setProperty("sun.awt.enableExtraMouseButtons", ""+areExtraMouseButtonsEnabled);
280 setExtraMouseButtonsEnabledNative(areExtraMouseButtonsEnabled);
281 }
282
283 private void registerShutdownHook() {
284 AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
285 Thread shutdown = new Thread(
286 ThreadGroupUtils.getRootThreadGroup(), this::shutdown,
287 "ToolkitShutdown", 0, false);
288 shutdown.setContextClassLoader(null);
289 Runtime.getRuntime().addShutdownHook(shutdown);
290 return null;
291 });
292 }
293
294 @Override
295 public void run() {
296 AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
297 Thread.currentThread().setContextClassLoader(null);
298 Thread.currentThread().setPriority(Thread.NORM_PRIORITY + 1);
299 return null;
300 });
301
302 boolean startPump = init();
303
304 if (startPump) {
305 registerShutdownHook();
306 }
307
|