< prev index next >

src/java.desktop/windows/classes/sun/awt/windows/WToolkit.java

Print this page




  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 


< prev index next >