• Home
    • View
    • Login
    This page
    • Normal
    • Export PDF
    • Page Information

    Loading...
  1. Dashboard
  2. Undefined Space
  3. OpenJFX
  4. Monocle

Monocle

  • Created by Daniel Blaukopf, last modified by Nir Lisker on Apr 08, 2020

Overview

Monocle is the implementation of the Glass windowing component of JavaFX for embedded systems. Monocle provides windowing functionality and access to native graphics for simple embedded systems that do not have an underlying window system.

Description of Monocle components

This is hard to read in the web interface, so you'll want to download the PDF if you are interested in Monocle's inner workings.

How to build Monocle

If you build OpenJFX for embedded Linux/ARM platforms from the 8u-dev repository then you get a functioning Monocle as well. You can also build it for Linux/x86 using the x86egl compile target (build with -PCOMPILE_TARGETS=x86egl on a system with GLESv2 and EGL development libraries installed). This builds the embedded stack for the Linux desktop; it is not the same as the GTK implementation of Glass. You cannot currently build any of the graphical implementations of Monocle for desktop windowing systems.

How to run Monocle

Monocle is now the default implementation of Glass on embedded platforms. 

You can select one of the specific back-ends of Monocle with the system property monocle.platform. Some of the back-ends work only with hardware rendering (the es2 pipeline); some work only with software rendering (the sw pipeline).

monocle.platformprism.order optionsHardware on which this might work
MX6es2 (default) or swFreescale i.MX6 SDP or similar boards. Needs accelerated Vivante graphics drivers for framebuffer; not all OS configurations have these.
OMAPes2 (default) or sw

BeagleBoard xM. Note that the es2 pipeline requires PowerVR graphics drivers, which are only available on soft float configurations of Linux on the BeagleBoard.

OMAPX11es2BeagleBoard xM. Renders the JavaFX window stack to a single X11 window.
X11es2BeagleBoard; Linux/x86 desktop
LinuxswAny Linux system; uses software rendering
HeadlessswAny system
VNCswAny system

If you are running the desktop build of JavaFX or OpenJFX then your only monocle option is Headless. Desktop JavaFX does not support the javafx.platform system property, but you can select Monocle with:
-Dglass.platform=Monocle -Dmonocle.platform=Headless -Dprism.order=sw

On MacOS and Windows, removing -Dprism.order=sw can be critical to prevent crashes.

Status

What's working:

  • Accelerated rendering on Freescale i.MX6, BeagleBoard xM and Raspberry Pi
  • Mouse, key and single-point/multi-point touch input with Linux device nodes
  • Synthesis of mouse events from touch events
  • Double-buffered software rendering to memory-mapped /dev/fb0, with a software cursor
  • Hardware cursors on OMAP3, i.MX6 and Raspberry Pi
  • Touch coordinate transformations for screen calibration 
  • Pluggable pipeline for touch event cleanup
  • Nested event loops
  • Robot input and capture
  • HelloSanity is working on Freescale i.MX6, BeagleBoard xM and Raspberry Pi
  • Headless implementation running on embedded and desktop platforms, passing unit and system tests (base/graphics tests, system tests and Linux input tests)
  • VNC server mode with remote display and mouse input
  • Mouse input and accelerated rendering on X11
  • Drag and Drop
  • Full screen and minimized windows

What's not done yet:

  • Android port
  • DirectFB port

See also the JIRA query for open issues on Monocle

How to port Monocle

See Porting JavaFX to additional embedded Linux devices



Overview
Content Tools
ThemeBuilder
  • No labels

Terms of Use
• License: GPLv2
• Privacy • Trademarks • Contact Us

Powered by a free Atlassian Confluence Open Source Project License granted to https://www.atlassian.com/software/views/opensource-community-additional-license-offer. Evaluate Confluence today.

  • Kolekti ThemeBuilder Powered by Atlassian Confluence 8.5.21
  • Kolekti ThemeBuilder printed.by.atlassian.confluence
  • Report a bug
  • Atlassian News
Atlassian
Kolekti ThemeBuilder EngineAtlassian Confluence
{"serverDuration": 152, "requestCorrelationId": "fa8686b0772e2897"}