> When a Stage is closed while processing an OS message the glass peer object 
> is deleted immediately even if it's still executing member functions. As 
> glass unwinds the stack and executes cleanup code it's referencing freed 
> memory.
> 
> There are cases where glass generates JavaFX events back-to-back. For 
> example, when handling the Delete key glass sends a PRESSED and TYPED event 
> in the same routine. If the Stage is closed during the PRESSED event the code 
> that sends the TYPED event is running inside an object that has already been 
> deleted.
> 
> When the Stage is closed glass calls the OS routine ::DestroyWindow on the 
> HWND causing a WM_NCDESTROY message to be sent. Currently the BaseWnd object 
> is deleted when processing this message. This PR defers the destruction until 
> all messages have been processed. This is the same approach used in the Linux 
> code.

Martin Fox has updated the pull request incrementally with one additional 
commit since the last revision:

  Updated to match existing naming conventions

-------------

Changes:
  - all: https://git.openjdk.org/jfx/pull/1309/files
  - new: https://git.openjdk.org/jfx/pull/1309/files/0eb0f985..eaae9963

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=1309&range=01
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1309&range=00-01

  Stats: 9 lines in 2 files changed: 0 ins; 0 del; 9 mod
  Patch: https://git.openjdk.org/jfx/pull/1309.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1309/head:pull/1309

PR: https://git.openjdk.org/jfx/pull/1309

Reply via email to