Windows implementation of GlassClipboard.cpp uses IStorage interface in 
`PopImage()` to allocate a temporary file, which is then used to capture Image 
data from system clipboard and move it to JVM side. In order for temporary file 
to be removed automatically on `IStorage::Release()`, `StgCreateDocfile` API 
requires passing STGM_DELETEONRELEASE flag - otherwise the file will be left 
behind when IStorage is released. Contents of temporary file are immediately 
copied to a JNI Byte Array after acquiring them from clibpoard, so it is safe 
to provide this flag and remove the file after `PopImage()` is done.

Creating a unit test for this case would a bit difficult, as IStorage and its 
file are created with random temporary name each time, which we cannot easily 
access. On the other hand, just scouting the temp directory for any leftover 
.TMP files might prove false results, as other apps or even JFX itself might 
use IStorage temporary files for some other purposes than managing clipboard 
images. As such, because this is a simple API change, I did not make a test for 
this.

Tested this change on Windows 10 and it doesn't break any existing tests. 
Calling `Clipboard.getSystemClipboard().getImage()` with an image stored inside 
the system clipboard now leaves no leftover files.

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

Commit messages:
 - GlassClipboard: Remove unnecessary changes and debugging leftovers
 - 8290092: Temporary files are kept when call 
Clipboard.getSystemClipboard().getImage()

Changes: https://git.openjdk.org/jfx/pull/994/files
 Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=994&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8290092
  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jfx/pull/994.diff
  Fetch: git fetch https://git.openjdk.org/jfx pull/994/head:pull/994

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

Reply via email to