On Wed, 23 Oct 2024 20:10:02 GMT, Kevin Rushforth <k...@openjdk.org> 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

Reply via email to