[OpenJDK 2D-Dev] [13] Review Request: 6933331 (d3d/ogl) java.lang.IllegalStateException: Buffers have not been created
Philip Race
philip.race at oracle.com
Tue May 14 23:20:45 UTC 2019
Why is it not still using checkSize for that case, like this :-
if (checkSize&& ((getWidth() != width || getHeight() != height))
4256 || drawBuffer == null) {
4257 // component has been resized or the peer was recreated;
4258 // recreate the backbuffers
-phil
On 5/14/19, 3:15 PM, Sergey Bylokhov wrote:
> Hello.
> Please review the fix for JDK 13.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-6933331
> Fix: http://cr.openjdk.java.net/~serb/6933331/webrev.00
>
> While working on enabling LCD rendering on macOS via BufferStrategy
> rendering, I was able to find this bug, which was previously mainly
> reported on Windows where we use this code path. Usually the problem
> described as an intermittent exception after "changing display
> resolutions", and I think that the root cause is that in such
> intermittent situations we will recreate the peer of the component
> when we cannot update the GraphicConfig information on the fly in the
> java.awt.Component.java:
> =========
> void setGraphicsConfiguration(GraphicsConfiguration gc) {
> 1155 synchronized(getTreeLock()) {
> 1156 if (updateGraphicsData(gc)) {
> 1157 removeNotify();
> 1158 addNotify();
> 1159 }
> 1160 }
> 1161 }
> =========
>
> The bug can be easily reproduced if we will enable buffer strategy for
> the Window, and then dispose of the Window, and show again. In this
> case, the Window will drop internal buffers used by the bufferstrategy
> in the removeNotify() method, and we will get an exception when later
> the buffer strategy will try to use them.
>
> As a solution, I suggest recreating the backbuffers in the
> bufferStrategy if the old buffer was disposed of.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/2d-dev/attachments/20190514/1ef2c36e/attachment.html>
More information about the 2d-dev
mailing list