On Wed, 23 Oct 2024 20:10:02 GMT, Kevin Rushforth <[email protected]> wrote:
> This PR removes all doPrivileged calls from `com.sun.javafx.tk**` in the
> `javafx.graphics` module.
>
> Here is a quick overview of what I did for this fix:
>
> 1. Changed all simple cases of `doPrivileged((PrivilegedAction<T>) () ->
> LAMBDA)` to `LAMBDA`, removing the `@SuppressWarnings("removal")` if
> possible. In case of an unused or unneeded local variable, I removed the
> local variable.
> 2. Remove unused `AccessControlContext` variables, meaning those whose only
> use was to be passed into a doPrivileged call that is now gone.
> 3. Removed all `@SuppressWarnings("removal")` annotations that were unneeded
> after the removed doPrivileged calls. In some cases there are annotations on
> a method or class. Those can only be removed if the doPrivileged calls were
> the only use of deprecated SM API in that method or class.
> 4. Remove unused imports.
>
> Finally, here are a few "best practices" that I tried to follow, and would
> ask others to follow when doing their piece of this. The idea is to reduce
> the cognitive load on the reviewers. It might take you a couple extra
> minutes, but will save time during the review:
>
> * When removing the doPrivileged calls, please do the minimum amount of
> reformatting necessary to properly indent the body of the doPrivileged after
> it is removed. For example, don't wholesale reformat a method (or worse, an
> entire class) just because a couple doPrivileged calls are removed.
> * Please try to not reorder the import statements when removing unused
> imports.
>
> #### Notes to reviewers
>
> As a helpful hint for reviewers, I recommend reviewing this using the "Hide
> whitespace" option.
>
> An initial, limited review of this was done in my personal fork at
> kevinrushforth/jfx#4 if other reviwers are interested.
modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/QuantumToolkit.java
line 142:
> 140:
> 141: private static final boolean multithreaded = initMultithreaded();
> 142: private static boolean initMultithreaded() {
Have you considered a pattern such as this?
private static final boolean multithreaded = ((Supplier<Boolean>)() -> {
// If it is not specified, or it is true, then it should
// be true. Otherwise it should be false.
String value = System.getProperty("quantum.multithreaded");
if (value == null) return true;
final boolean result = Boolean.parseBoolean(value);
if (verbose) {
System.out.println(result ? "Multi-Threading Enabled" :
"Multi-Threading Disabled");
}
return result;
}).get();
This would prevent a proliferation of many new init methods.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1608#discussion_r1819938688