On Mon, 18 Nov 2019 14:07:23 GMT, Dell Green <github.com+12861109+dellgr...@openjdk.org> wrote:
> On Sun, 17 Nov 2019 10:04:36 GMT, Dell Green > <github.com+12861109+dellgr...@openjdk.org> wrote: > >> On Sat, 16 Nov 2019 17:51:56 GMT, John Neffenger >> <github.com+1413266+jgn...@openjdk.org> wrote: >> >>> On Sat, 16 Nov 2019 06:09:35 GMT, Dell Green >>> <github.com+12861109+dellgr...@openjdk.org> wrote: >>> >>>> On Sat, 16 Nov 2019 00:32:31 GMT, John Neffenger >>>> <github.com+1413266+jgn...@openjdk.org> wrote: >>>> >>>>> 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. >>>> >>>> OK, that looks a better way to go. I'll sort out out an additional pull >>>> request when back in work Monday. Off the top of your head can you >>>> remember the syntax to change the logger level from command line when >>>> starting the JVM? >>> >>>> Off the top of your head can you remember the syntax to change the logger >>>> level from command line when starting the JVM? >>> >>> Here's how I use it. My Bash run script is **bin/run.sh**: >>> >>> #!/bin/bash >>> # Runs the EPD JavaFX Animator program >>> JAVA_HOME=$HOME/opt/jdk-13.0.1+9 >>> JAVAFX_LIB=$HOME/lib/armv6hf-sdk/lib >>> >>> app_dir=$HOME/src/epd-javafx >>> app_jar=$app_dir/dist/epd-javafx.jar >>> logging=$app_dir/conf/logging.properties >>> >>> $JAVA_HOME/bin/java -Djava.util.logging.config.file=$logging \ >>> --add-modules=javafx.graphics --module-path=$JAVAFX_LIB \ >>> -Dglass.platform=Monocle -Dmonocle.platform=EPD -Dprism.order=sw \ >>> -Dmonocle.input.18/0/0/0.maxX=800 -Dmonocle.input.18/0/0/0.maxY=600 \ >>> -Dmonocle.epd.waveformMode=4 -jar $app_jar $@ >>> >>> The logging properties are defined in **conf/logging.properties**: >>> >>> Properties >>> # Global properties >>> handlers = java.util.logging.ConsoleHandler >>> .level = INFO >>> >>> # Handler specific properties >>> java.util.logging.ConsoleHandler.level = ALL >>> java.util.logging.ConsoleHandler.formatter = >>> java.util.logging.SimpleFormatter >>> java.util.logging.SimpleFormatter.format=%4$s: %5$s%n >>> >>> # Facility specific properties >>> javafx.level = FINE >>> >>> The output looks like the following: >>> >>> $ sudo bin/run.sh --pattern=3 --loops=0 >>> FINE: EPD system properties: {monocle.epd.waveformMode=4} >>> FINE: Frame buffer geometry: 800 600 800 640 32 >>> FINE: Frame buffer rgba: 8/16,8/8,8/0,8/24 >>> FINE: Frame buffer grayscale: 0 >>> FINE: Mapping frame buffer: 1,920,000 bytes >>> Frame rate: 80 frames in 11.93 s = 6.70 fps (149 ms/frame) >>> Frame rate: 80 frames in 9.97 s = 8.03 fps (125 ms/frame) >>> Frame rate: 80 frames in 9.96 s = 8.03 fps (125 ms/frame) >>> >>> You can just add a new commit to this pull request branch. (I think that's >>> what you meant, but just in case.) The commits get *squashed* into a single >>> commit when they are integrated into the target branch. >> >> cool thanks, apologies i meant commit. :) > > system property has now been changed to use platform logger as advised. has > been tested successfully on my imx6 board. no probs, thanks for approving :) PR: https://git.openjdk.java.net/jfx/pull/5