Details
Description
For some time now we have had an intermittent buffer creation issue with the PageViewComponentImpl. When the issue occurs the page is rendered white with no content. Change the the zoom will cause the page to refresh and be painted.
Activity
Patrick Corless
created issue -
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #41828 | Mon Jul 21 15:36:13 MDT 2014 | patrick.corless | |
Files Changed | ||||
MODIFY
/icepdf/branches/icepdf-5.0.1/icepdf/viewer/src/org/icepdf/ri/common/views/PageViewComponentImpl.java
|
Patrick Corless
made changes -
Field | Original Value | New Value |
---|---|---|
Status | Open [ 1 ] | Resolved [ 5 ] |
Fix Version/s | 5.0.7 [ 11470 ] | |
Resolution | Fixed [ 1 ] |
Patrick Corless
made changes -
Fix Version/s | 5.1 [ 10675 ] | |
Fix Version/s | 5.0.7 [ 11470 ] |
Patrick Corless
made changes -
Fix Version/s | 5.0.7 [ 11470 ] | |
Fix Version/s | 5.1 [ 10675 ] |
Patrick Corless
made changes -
Status | Resolved [ 5 ] | Closed [ 6 ] |
This has taken a considerable amount of time to narrow down but basically there is a race condition in the main dirty timer action event where a page can be flagged to stop painting before the painter thread has been started. The result is a painter thread that will stop before it begins to paint.
I've reworked two main pieces of functionality. The first is around the page state being dirty, dirty is defined as either the zoom or rotation has changed or the clipping bounds have changed. The dirty check is now made on the AWT paintComponent() call. This helps avoid the race condition int the timer action event. The timer action event is no only used for start page initialization and page painting.
The major rework was the removal of a Timer object for each page component instance. Each page component now adds an instance of the DirtyTimerAction to a static timer. Under the covers the Timer object uses the same thread across all instances so this more of a clean up exercise but it should help minimize some over head of having all the timer instances.
The random white buffer paint seems to be significantly reduced. Further work on this issue may have to be done in the future if we get a more easily to reproduce test case.