Enabling Glass thread checks

2013-10-04 Thread Petr Pchelko
Hello, OpenJFX.

FX is a single threaded UI toolkit. Glass (the underlying native window toolkit 
portability layer for FX) is being changed to ensure it is
accessed from the UI thread. You can follow progress in 
https://javafx-jira.kenai.com/browse/RT-26891

We are reenabling the Glass thread checks ones again. Previous attempts failed, 
because we've been finding some threading issues,
however now all the threading issues have been fixed and we are in a good state 
to switch on the checks again.

The following exception would mean that you've hit a thread check: 
IllegalStateException(This operation is permitted on the event thread only). 
In that case please check your threading and if everything seems correct - 
please contact the Glass team.

Thank you.
With best regards. Petr.

RE: Enabling Glass thread checks

2013-10-04 Thread John Smith
 IllegalStateException(This operation is permitted on the event thread only)

What is the event thread?

Current warnings about thread rule violations appear to be something like below 
(from: 
http://stackoverflow.com/questions/12182592/javafx-2-x-swing-not-on-fx-application-thread):

   Exception in thread AWT-EventQueue-0 java.lang.IllegalStateException: Not 
on FX application thread; currentThread = AWT-EventQueue-0

It is very confusing if warnings about what thread you should be on might use 
different names for what is perhaps the same thing.

If I do System.out.println(Thread.currentThread().getName()); in a start() 
method, I get:

  JavaFX Application Thread

The JavaFX Architecture overview 
(http://docs.oracle.com/javafx/2/architecture/jfxpub-architecture.htm#A1107438) 
only mentions these threads:

JavaFX application thread: This is the primary thread used by JavaFX 
application developers. Any live scene, which is a scene that is part of a 
window, must be accessed from this thread. A scene graph can be created and 
manipulated in a background thread, but when its root node is attached to any 
live object in the scene, that scene graph must be accessed from the JavaFX 
application thread. This enables developers to create complex scene graphs on a 
background thread while keeping animations on 'live' scenes smooth and fast. 
The JavaFX application thread is a different thread from the Swing and AWT 
Event Dispatch Thread (EDT), so care must be taken when embedding JavaFX code 
into Swing applications.

Prism render thread: This thread handles the rendering separately from the 
event dispatcher. It allows frame N to be rendered while frame N +1 is being 
processed. This ability to perform concurrent processing is a big advantage, 
especially on modern systems that have multiple processors. The Prism render 
thread may also have multiple rasterization threads that help off-load work 
that needs to be done in rendering.

Media thread: This thread runs in the background and synchronizes the 
latest frames through the scene graph by using the JavaFX application thread.

-Original Message-
From: openjfx-dev-boun...@openjdk.java.net 
[mailto:openjfx-dev-boun...@openjdk.java.net] On Behalf Of Petr Pchelko
Sent: Friday, October 04, 2013 1:40 AM
To: OpenJFX list
Subject: Enabling Glass thread checks

Hello, OpenJFX.

FX is a single threaded UI toolkit. Glass (the underlying native window toolkit 
portability layer for FX) is being changed to ensure it is accessed from the UI 
thread. You can follow progress in https://javafx-jira.kenai.com/browse/RT-26891

We are reenabling the Glass thread checks ones again. Previous attempts failed, 
because we've been finding some threading issues, however now all the threading 
issues have been fixed and we are in a good state to switch on the checks again.

The following exception would mean that you've hit a thread check: 
IllegalStateException(This operation is permitted on the event thread only). 
In that case please check your threading and if everything seems correct - 
please contact the Glass team.

Thank you.
With best regards. Petr.


Re: Enabling Glass thread checks

2013-10-04 Thread steve . x . northover
It's the JavaFX Application Thread.  We tend to use the term event 
thread and UI thread to indicate that the thread is a distinguished 
UI thread that processes operating system events by running an event loop.


Steve

On 04/10/2013 2:45 PM, John Smith wrote:

IllegalStateException(This operation is permitted on the event thread only)

What is the event thread?

Current warnings about thread rule violations appear to be something like below 
(from: 
http://stackoverflow.com/questions/12182592/javafx-2-x-swing-not-on-fx-application-thread):

Exception in thread AWT-EventQueue-0 java.lang.IllegalStateException: Not 
on FX application thread; currentThread = AWT-EventQueue-0

It is very confusing if warnings about what thread you should be on might use 
different names for what is perhaps the same thing.

If I do System.out.println(Thread.currentThread().getName()); in a start() 
method, I get:

   JavaFX Application Thread

The JavaFX Architecture overview 
(http://docs.oracle.com/javafx/2/architecture/jfxpub-architecture.htm#A1107438) 
only mentions these threads:

 JavaFX application thread: This is the primary thread used by JavaFX application 
developers. Any live scene, which is a scene that is part of a window, must 
be accessed from this thread. A scene graph can be created and manipulated in a 
background thread, but when its root node is attached to any live object in the scene, 
that scene graph must be accessed from the JavaFX application thread. This enables 
developers to create complex scene graphs on a background thread while keeping animations 
on 'live' scenes smooth and fast. The JavaFX application thread is a different thread 
from the Swing and AWT Event Dispatch Thread (EDT), so care must be taken when embedding 
JavaFX code into Swing applications.

 Prism render thread: This thread handles the rendering separately from the 
event dispatcher. It allows frame N to be rendered while frame N +1 is being 
processed. This ability to perform concurrent processing is a big advantage, 
especially on modern systems that have multiple processors. The Prism render 
thread may also have multiple rasterization threads that help off-load work 
that needs to be done in rendering.

 Media thread: This thread runs in the background and synchronizes the 
latest frames through the scene graph by using the JavaFX application thread.

-Original Message-
From: openjfx-dev-boun...@openjdk.java.net 
[mailto:openjfx-dev-boun...@openjdk.java.net] On Behalf Of Petr Pchelko
Sent: Friday, October 04, 2013 1:40 AM
To: OpenJFX list
Subject: Enabling Glass thread checks

Hello, OpenJFX.

FX is a single threaded UI toolkit. Glass (the underlying native window toolkit 
portability layer for FX) is being changed to ensure it is accessed from the UI 
thread. You can follow progress in https://javafx-jira.kenai.com/browse/RT-26891

We are reenabling the Glass thread checks ones again. Previous attempts failed, 
because we've been finding some threading issues, however now all the threading 
issues have been fixed and we are in a good state to switch on the checks again.

The following exception would mean that you've hit a thread check: 
IllegalStateException(This operation is permitted on the event thread only).
In that case please check your threading and if everything seems correct - 
please contact the Glass team.

Thank you.
With best regards. Petr.




Re: Enabling Glass thread checks

2013-10-04 Thread steve . x . northover
We are BAD.  It should really be FX Application Thread but the GUI, 
event nature of the thread is critical to what it is. That's why the 
terms keep getting added.


Steve

On 04/10/2013 3:36 PM, Richard Bair wrote:

Ya, event thread, fx thread, ui thread, app thread, FX Application 
thread --- they're all the same thing. It would be better if we settled on one name.

Richard

On Oct 4, 2013, at 12:00 PM, steve.x.northo...@oracle.com wrote:


It's the JavaFX Application Thread.  We tend to use the term event thread and UI 
thread to indicate that the thread is a distinguished UI thread that processes operating 
system events by running an event loop.

Steve

On 04/10/2013 2:45 PM, John Smith wrote:

IllegalStateException(This operation is permitted on the event thread only)

What is the event thread?

Current warnings about thread rule violations appear to be something like below 
(from: 
http://stackoverflow.com/questions/12182592/javafx-2-x-swing-not-on-fx-application-thread):

Exception in thread AWT-EventQueue-0 java.lang.IllegalStateException: Not 
on FX application thread; currentThread = AWT-EventQueue-0

It is very confusing if warnings about what thread you should be on might use 
different names for what is perhaps the same thing.

If I do System.out.println(Thread.currentThread().getName()); in a start() 
method, I get:

   JavaFX Application Thread

The JavaFX Architecture overview 
(http://docs.oracle.com/javafx/2/architecture/jfxpub-architecture.htm#A1107438) 
only mentions these threads:

 JavaFX application thread: This is the primary thread used by JavaFX application 
developers. Any live scene, which is a scene that is part of a window, must 
be accessed from this thread. A scene graph can be created and manipulated in a 
background thread, but when its root node is attached to any live object in the scene, 
that scene graph must be accessed from the JavaFX application thread. This enables 
developers to create complex scene graphs on a background thread while keeping animations 
on 'live' scenes smooth and fast. The JavaFX application thread is a different thread 
from the Swing and AWT Event Dispatch Thread (EDT), so care must be taken when embedding 
JavaFX code into Swing applications.

 Prism render thread: This thread handles the rendering separately from the 
event dispatcher. It allows frame N to be rendered while frame N +1 is being 
processed. This ability to perform concurrent processing is a big advantage, 
especially on modern systems that have multiple processors. The Prism render 
thread may also have multiple rasterization threads that help off-load work 
that needs to be done in rendering.

 Media thread: This thread runs in the background and synchronizes the 
latest frames through the scene graph by using the JavaFX application thread.

-Original Message-
From: openjfx-dev-boun...@openjdk.java.net 
[mailto:openjfx-dev-boun...@openjdk.java.net] On Behalf Of Petr Pchelko
Sent: Friday, October 04, 2013 1:40 AM
To: OpenJFX list
Subject: Enabling Glass thread checks

Hello, OpenJFX.

FX is a single threaded UI toolkit. Glass (the underlying native window toolkit 
portability layer for FX) is being changed to ensure it is accessed from the UI 
thread. You can follow progress in https://javafx-jira.kenai.com/browse/RT-26891

We are reenabling the Glass thread checks ones again. Previous attempts failed, 
because we've been finding some threading issues, however now all the threading 
issues have been fixed and we are in a good state to switch on the checks again.

The following exception would mean that you've hit a thread check: 
IllegalStateException(This operation is permitted on the event thread only).
In that case please check your threading and if everything seems correct - 
please contact the Glass team.

Thank you.
With best regards. Petr.




Re: Enabling Glass thread checks

2013-10-04 Thread Richard Bair
I always disliked FX Application thread, which is why I don't use it. The FXAT 
or FAT are acronyms we ought to avoid. EDT was great for Swing because it was 
super short, but we don't want to reuse EDT because that would be confusing. 
Personally I tend to use FX Thread because it is clear that this is the thread 
for JavaFX (and as far as users of the toolkit goes, the only thread that 
matters). Oh well.


On Oct 4, 2013, at 12:38 PM, steve.x.northo...@oracle.com wrote:

 We are BAD.  It should really be FX Application Thread but the GUI, 
 event nature of the thread is critical to what it is. That's why the terms 
 keep getting added.
 
 Steve
 
 On 04/10/2013 3:36 PM, Richard Bair wrote:
 Ya, event thread, fx thread, ui thread, app thread, FX Application 
 thread --- they're all the same thing. It would be better if we settled on 
 one name.
 
 Richard
 
 On Oct 4, 2013, at 12:00 PM, steve.x.northo...@oracle.com wrote:
 
 It's the JavaFX Application Thread.  We tend to use the term event thread 
 and UI thread to indicate that the thread is a distinguished UI thread 
 that processes operating system events by running an event loop.
 
 Steve
 
 On 04/10/2013 2:45 PM, John Smith wrote:
 IllegalStateException(This operation is permitted on the event thread 
 only)
 What is the event thread?
 
 Current warnings about thread rule violations appear to be something like 
 below (from: 
 http://stackoverflow.com/questions/12182592/javafx-2-x-swing-not-on-fx-application-thread):
 
Exception in thread AWT-EventQueue-0 java.lang.IllegalStateException: 
 Not on FX application thread; currentThread = AWT-EventQueue-0
 
 It is very confusing if warnings about what thread you should be on might 
 use different names for what is perhaps the same thing.
 
 If I do System.out.println(Thread.currentThread().getName()); in a start() 
 method, I get:
 
   JavaFX Application Thread
 
 The JavaFX Architecture overview 
 (http://docs.oracle.com/javafx/2/architecture/jfxpub-architecture.htm#A1107438)
  only mentions these threads:
 
 JavaFX application thread: This is the primary thread used by JavaFX 
 application developers. Any live scene, which is a scene that is part of 
 a window, must be accessed from this thread. A scene graph can be created 
 and manipulated in a background thread, but when its root node is attached 
 to any live object in the scene, that scene graph must be accessed from 
 the JavaFX application thread. This enables developers to create complex 
 scene graphs on a background thread while keeping animations on 'live' 
 scenes smooth and fast. The JavaFX application thread is a different 
 thread from the Swing and AWT Event Dispatch Thread (EDT), so care must be 
 taken when embedding JavaFX code into Swing applications.
 
 Prism render thread: This thread handles the rendering separately from 
 the event dispatcher. It allows frame N to be rendered while frame N +1 is 
 being processed. This ability to perform concurrent processing is a big 
 advantage, especially on modern systems that have multiple processors. The 
 Prism render thread may also have multiple rasterization threads that help 
 off-load work that needs to be done in rendering.
 
 Media thread: This thread runs in the background and synchronizes the 
 latest frames through the scene graph by using the JavaFX application 
 thread.
 
 -Original Message-
 From: openjfx-dev-boun...@openjdk.java.net 
 [mailto:openjfx-dev-boun...@openjdk.java.net] On Behalf Of Petr Pchelko
 Sent: Friday, October 04, 2013 1:40 AM
 To: OpenJFX list
 Subject: Enabling Glass thread checks
 
 Hello, OpenJFX.
 
 FX is a single threaded UI toolkit. Glass (the underlying native window 
 toolkit portability layer for FX) is being changed to ensure it is 
 accessed from the UI thread. You can follow progress in 
 https://javafx-jira.kenai.com/browse/RT-26891
 
 We are reenabling the Glass thread checks ones again. Previous attempts 
 failed, because we've been finding some threading issues, however now all 
 the threading issues have been fixed and we are in a good state to switch 
 on the checks again.
 
 The following exception would mean that you've hit a thread check: 
 IllegalStateException(This operation is permitted on the event thread 
 only).
 In that case please check your threading and if everything seems correct - 
 please contact the Glass team.
 
 Thank you.
 With best regards. Petr.
 



Re: Enabling Glass thread checks

2013-10-04 Thread Thor Johannesson
+1 for FX Thread.
-Thor
On Oct 4, 2013, at 12:53 PM, Richard Bair wrote:

 I always disliked FX Application thread, which is why I don't use it. The 
 FXAT or FAT are acronyms we ought to avoid. EDT was great for Swing because 
 it was super short, but we don't want to reuse EDT because that would be 
 confusing. Personally I tend to use FX Thread because it is clear that this 
 is the thread for JavaFX (and as far as users of the toolkit goes, the only 
 thread that matters). Oh well.
 
 
 On Oct 4, 2013, at 12:38 PM, steve.x.northo...@oracle.com wrote:
 
 We are BAD.  It should really be FX Application Thread but the GUI, 
 event nature of the thread is critical to what it is. That's why the terms 
 keep getting added.
 
 Steve
 
 On 04/10/2013 3:36 PM, Richard Bair wrote:
 Ya, event thread, fx thread, ui thread, app thread, FX Application 
 thread --- they're all the same thing. It would be better if we settled on 
 one name.
 
 Richard
 
 On Oct 4, 2013, at 12:00 PM, steve.x.northo...@oracle.com wrote:
 
 It's the JavaFX Application Thread.  We tend to use the term event 
 thread and UI thread to indicate that the thread is a distinguished UI 
 thread that processes operating system events by running an event loop.
 
 Steve
 
 On 04/10/2013 2:45 PM, John Smith wrote:
 IllegalStateException(This operation is permitted on the event thread 
 only)
 What is the event thread?
 
 Current warnings about thread rule violations appear to be something like 
 below (from: 
 http://stackoverflow.com/questions/12182592/javafx-2-x-swing-not-on-fx-application-thread):
 
   Exception in thread AWT-EventQueue-0 java.lang.IllegalStateException: 
 Not on FX application thread; currentThread = AWT-EventQueue-0
 
 It is very confusing if warnings about what thread you should be on might 
 use different names for what is perhaps the same thing.
 
 If I do System.out.println(Thread.currentThread().getName()); in a 
 start() method, I get:
 
  JavaFX Application Thread
 
 The JavaFX Architecture overview 
 (http://docs.oracle.com/javafx/2/architecture/jfxpub-architecture.htm#A1107438)
  only mentions these threads:
 
JavaFX application thread: This is the primary thread used by JavaFX 
 application developers. Any live scene, which is a scene that is part 
 of a window, must be accessed from this thread. A scene graph can be 
 created and manipulated in a background thread, but when its root node is 
 attached to any live object in the scene, that scene graph must be 
 accessed from the JavaFX application thread. This enables developers to 
 create complex scene graphs on a background thread while keeping 
 animations on 'live' scenes smooth and fast. The JavaFX application 
 thread is a different thread from the Swing and AWT Event Dispatch Thread 
 (EDT), so care must be taken when embedding JavaFX code into Swing 
 applications.
 
Prism render thread: This thread handles the rendering separately from 
 the event dispatcher. It allows frame N to be rendered while frame N +1 
 is being processed. This ability to perform concurrent processing is a 
 big advantage, especially on modern systems that have multiple 
 processors. The Prism render thread may also have multiple rasterization 
 threads that help off-load work that needs to be done in rendering.
 
Media thread: This thread runs in the background and synchronizes the 
 latest frames through the scene graph by using the JavaFX application 
 thread.
 
 -Original Message-
 From: openjfx-dev-boun...@openjdk.java.net 
 [mailto:openjfx-dev-boun...@openjdk.java.net] On Behalf Of Petr Pchelko
 Sent: Friday, October 04, 2013 1:40 AM
 To: OpenJFX list
 Subject: Enabling Glass thread checks
 
 Hello, OpenJFX.
 
 FX is a single threaded UI toolkit. Glass (the underlying native window 
 toolkit portability layer for FX) is being changed to ensure it is 
 accessed from the UI thread. You can follow progress in 
 https://javafx-jira.kenai.com/browse/RT-26891
 
 We are reenabling the Glass thread checks ones again. Previous attempts 
 failed, because we've been finding some threading issues, however now all 
 the threading issues have been fixed and we are in a good state to switch 
 on the checks again.
 
 The following exception would mean that you've hit a thread check: 
 IllegalStateException(This operation is permitted on the event thread 
 only).
 In that case please check your threading and if everything seems correct 
 - please contact the Glass team.
 
 Thank you.
 With best regards. Petr.