< 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 >