< prev index next >

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

Print this page

        

*** 24,39 **** --- 24,42 ---- */ package sun.awt; import java.awt.AWTError; + import java.awt.EventQueue; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.peer.ComponentPeer; import java.lang.ref.WeakReference; import java.util.ArrayList; + import java.util.HashSet; import java.util.ListIterator; + import java.util.Set; import sun.awt.windows.WToolkit; import sun.java2d.SunGraphicsEnvironment; import sun.java2d.SurfaceManagerFactory; import sun.java2d.WindowsSurfaceManagerFactory;
*** 252,272 **** */ public static boolean isDWMCompositionEnabled() { return isDWMCompositionEnabled; } /** ! * Called from the native code when DWM composition state changed. ! * May be called multiple times during the lifetime of the application. ! * REMIND: we may want to create a listener mechanism for this. * * Note: called on the Toolkit thread, no user code or locks are allowed. * * @param enabled indicates the state of dwm composition */ private static void dwmCompositionChanged(boolean enabled) { isDWMCompositionEnabled = enabled; } /** * Used to find out if the OS is Windows Vista or later. * --- 255,288 ---- */ public static boolean isDWMCompositionEnabled() { return isDWMCompositionEnabled; } + private static final Set<Runnable> dwmCompositionChangeListeners = new HashSet<>(); + + public static void addDwmCompositionChangeListener(Runnable listener) { + dwmCompositionChangeListeners.add(listener); + } + + public static void removeDwmCompositionChangeListener(Runnable listener) { + dwmCompositionChangeListeners.remove(listener); + } + /** ! * Called from the native code when DWM composition state changed. May be ! * called multiple times during the lifetime of the application. * * Note: called on the Toolkit thread, no user code or locks are allowed. * * @param enabled indicates the state of dwm composition */ private static void dwmCompositionChanged(boolean enabled) { isDWMCompositionEnabled = enabled; + if (dwmCompositionChangeListeners != null) { + EventQueue.invokeLater(() + -> dwmCompositionChangeListeners.forEach(Runnable::run)); + } } /** * Used to find out if the OS is Windows Vista or later. *
< prev index next >