On Wed, 13 Nov 2019 22:04:36 GMT, Dell Green 
<github.com+12861109+dellgr...@openjdk.org> wrote:

> On Wed, 13 Nov 2019 21:34:06 GMT, John Neffenger 
> <github.com+1413266+jgn...@openjdk.org> wrote:
> 
>> On Tue, 8 Oct 2019 12:03:42 GMT, Dell Green 
>> <12861109+dellgr...@users.noreply.github.com> wrote:
>> 
>>> Often on embedded systems a cursor is not a valid input modality. On some 
>>> of these systems, when the javafx toolkit initialises the native hardware 
>>> cursor, it produces artefacts which can be seen on screen (in the 
>>> framebuffer for example). This change adds a system property 
>>> "monocle.cursor.enabled" that can disable the creation of a native cursor 
>>> in each of the Monocle NativePlatform implementations in favour of a 
>>> NullCursor which is a no-op implementation of the NativeCursor abstract 
>>> class that all native cursors have to implement.
>>> 
>>> NullCursor class already existed and was being returned for some 
>>> implementations like AndroidPlatform and HeadlessPlatform. This change 
>>> builds upon that and conditionally returns NullCursor for all platforms.
>>> 
>>> A system property "monocle.debugcursor" has also been added to turn on 
>>> logging of which NativeCursor has been selected when the toolkit 
>>> initialises.
>>> 
>>> ----------------
>>> 
>>> Commits:
>>>  - cfbbc7dd: JDK-8087980: Add property to disable Monocle cursor
>>> 
>>> Changes: https://git.openjdk.java.net/jfx/pull/5/files
>>>  Webrev: https://webrevs.openjdk.java.net/jfx/5/webrev.00
>>>   Issue: https://bugs.openjdk.java.net/browse/JDK-8087980
>>>   Stats: 49 lines in 8 files changed: 40 ins; 0 del; 9 mod
>>>   Patch: https://git.openjdk.java.net/jfx/pull/5.diff
>>>   Fetch: git fetch https://git.openjdk.java.net/jfx pull/5/head:pull/5
>> 
>> modules/javafx.graphics/src/main/java/com/sun/glass/ui/monocle/NativePlatform.java
>>  line 50:
>> 
>>> 49:         AccessController.doPrivileged((PrivilegedAction<Boolean>) () -> 
>>> {
>>> 50:             final String str =
>>> 51:                 System.getProperty("monocle.debugcursor", "");
>> 
>> Just a nit, but why `monocle.debugcursor` rather than `monocle.cursor.debug` 
>> (my preference), or at least `monocle.debugCursor`? Below is the full list, 
>> for comparison, including the two added by this pull request.
>> 
>> monocle.cursor.enabled
>> monocle.debugcursor
>> monocle.epd.bitsPerPixel
>> monocle.epd.enableInversion
>> monocle.epd.forceMonochrome
>> monocle.epd.noWait
>> monocle.epd.rotate
>> monocle.epd.useDitheringY1
>> monocle.epd.useDitheringY4
>> monocle.epd.waveformMode
>> monocle.epd.y8inverted
>> monocle.input.<product>.flipXY
>> monocle.input.<product>.maxX
>> monocle.input.<product>.maxY
>> monocle.input.<product>.minX
>> monocle.input.<product>.minY
>> monocle.input.<product>.touchFilters
>> monocle.input.touchFilters
>> monocle.input.touchRadius
>> monocle.input.traceEvents
>> monocle.input.traceEvents.verbose
>> monocle.maliSignedStruct
>> monocle.platform
>> monocle.platform.traceConfig
>> monocle.screen.fb
>> monocle.stackSize
>> 
>> I'm nervous about our hidden API of system properties, and I'm as guilty as 
>> anyone with the nine properties I added for Monocle EPD. I think it might be 
>> okay as long as the code gets the property values only during class 
>> initialization. That should restrict their use to startup scripts and keep 
>> them out of application code trying to modify them *on-the-fly* at run time.
> 
> if i recall i originally started with the format you recommend as it made 
> more sense, and when looking for other debug logging across the javafx stack 
> I picked up on somewhat of a loose existing convention so changed to match 
> it. I guess it can be whatever everyone agrees upon. :)

On second thought, let's remove `monocle.debugcursor` and use a 
[PlatformLogger](https://github.com/openjdk/jfx/blob/master/modules/javafx.base/src/main/java/com/sun/javafx/logging/PlatformLogger.java).
 The JavaFX loggers are available from 
[Logging](https://github.com/openjdk/jfx/blob/master/modules/javafx.graphics/src/main/java/com/sun/javafx/util/Logging.java).
 In retrospect, that's how I managed to avoid any new *debug* properties for 
Monocle EPD even though it's packed with debugging and trace messages. For 
examples, see the variable `logger` in 
[EPDFrameBuffer](https://github.com/openjdk/jfx/blob/master/modules/javafx.graphics/src/main/java/com/sun/glass/ui/monocle/EPDFrameBuffer.java),
 where `logger.fine` is called for messages printed once per run, while 
`logger.finer` is called for messages printed once per rendered frame.

PR: https://git.openjdk.java.net/jfx/pull/5

Reply via email to