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