EVALUATION
More clarifications on the fix:
On Windows Vista we need to signal to the OS that our application is High-DPI aware by calling a Win32 function ::SetProcessDPIAware().
But since calling this method changes the "high dpi-awareness" property of the
process we need to be careful when we can safely call it without
inadvertenly changing parent's process status.
We have determined that we could only call it when a java process is started
from one of our known launchers (java, javaw, javaws, etc), and not
in case of java plugin, or other embedded scenarios.
We've also added the following public property for controlling
dpi-awareness:
Property usage:
-Dsun.java2d.dpiaware=[true|false]
This property flag overrides the default behavior in regards
to marking Java process High DPI aware on Windows Vista. By default
the process is only marked as High DPI aware if it is started from one
of the standard launchers (java.exe, javaw.exe, jconsole.exe, etc).
If the property is set to "true", the java process will be marked as DPI aware
regardless of the way it was launched.
If the property is set to "false", the java process will not be marked as
DPI aware.
Note that High DPI-awareness is inherited from the parent process,
so the java process started by the java plugin will inherit it from the
browser. This means that there is no need for changing the default
for plugin using the property.
This property is ignored on any OS other than Windows Vista.
|