JDK-5104569 : OGL: artifacts result when another window dragged over
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 5.0
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2004-09-20
  • Updated: 2005-03-07
  • Resolved: 2005-03-07
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6
6 betaFixed
Related Reports
Relates :  
Description
Single-buffered apps using the OpenGL-based pipeline sometimes do not repaint
properly when another window is dragged over the app window.  This is especially
evident when the application does a lot of complex (i.e. time consuming) 
rendering in its paint() method.  Symptoms include:
  - areas left unpainted (when they should be refreshed)
  - background not painted (even though foreground content is visible)
  - areas not painted in the expected location

Attached is a testcase that does some complex rendering to the screen in its
paint() routine.  Compile and run the testcase with -Dsun.java2d.opengl=True,
and then drag another window over the testcase window.  You should notice that
the testcase window often repaints improperly under these circumstances.  Note
that this problem is reproducible on all platforms (Solaris, Linux, and
Windows) when the OGL-based pipeline is enabled.

Comments
EVALUATION Most likely caused by a race condition with other windowing-system-generated events, such as background clearing. We might be able to deal with this by detecting expose events and issuing an XSync (or glXWaitX()) before continuing on with the OGL rendering. I believe this approach is used in some of our DGA code to solve similar problems. ###@###.### 2004-09-20 The auto-flush mechanism is much improved under the new single-threaded OGL pipeline (see 6219284). Since there is only one rendering thread, it is much easier to ensure that all pending operations are periodically flushed. With my single-threaded OGL workspace, I can run the attached testcase and drag another window over it without leaving any unrendered regions. Therefore, we should be able to close this bug as fixed once we putback the work for 6219284. ###@###.### 2005-1-20 00:19:46 GMT
20-01-2005