Bug 39139 - Pages that use hardware acceleration don't repaint after waking computer from sleep
: Pages that use hardware acceleration don't repaint after waking computer from...
Status: RESOLVED FIXED
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering
: 528+ (Nightly build)
: PC Windows XP
: P2 Normal
Assigned To: Adam Roben (:aroben)
http://webkit.org/blog-files/3d-trans...
: InRadar, PlatformOnly
Depends on: 39159
Blocks:
  Show dependency treegraph
 
Reported: 2010-05-14 14:51 PDT by Adam Roben (:aroben)
Modified: 2010-05-17 08:06 PDT (History)
4 users (show)

See Also:


Attachments
Periodically try to reset a lost IDirect3DDevice9 until we succeed (13.10 KB, patch)
2010-05-15 06:18 PDT, Adam Roben (:aroben)
sullivan: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Adam Roben (:aroben) 2010-05-14 14:51:38 PDT
To reproduce:

1. Go to <http://webkit.org/blog-files/3d-transforms/poster-circle.html>
2. Put your computer to sleep
3. Wake the computer back up

The page never repaints (until you navigate somewhere else, or reload).

The problem is that WKCACFLayerRenderer doesn't respond to lost devices correctly. See <http://msdn.microsoft.com/en-us/library/bb174714(v=VS.85).aspx>.
Comment 1 Adam Roben (:aroben) 2010-05-14 14:52:02 PDT
<rdar://problem/7986906>
Comment 2 Adam Roben (:aroben) 2010-05-15 06:18:15 PDT
Created attachment 56151 [details]
Periodically try to reset a lost IDirect3DDevice9 until we succeed
Comment 3 John Sullivan 2010-05-15 07:34:25 PDT
Comment on attachment 56151 [details]
Periodically try to reset a lost IDirect3DDevice9 until we succeed

> -    resetDevice();
> +    resetDevice(ChangedWindowSize);

Is it worth asserting that this call returns true?

r+
Comment 4 Eric Seidel 2010-05-16 00:37:26 PDT
Attachment 56151 [details] was posted by a committer and has review+, assigning to Adam Roben for commit.
Comment 5 Adam Roben (:aroben) 2010-05-17 07:58:00 PDT
(In reply to comment #3)
> (From update of attachment 56151 [details])
> > -    resetDevice();
> > +    resetDevice(ChangedWindowSize);
> 
> Is it worth asserting that this call returns true?

No. Resetting might fail at this point (e.g., if the device became lost sometime since the last time we rendered), so we can't assert that it doesn't. But we don't need to worry here whether it failed or not; if it did fail, we'll try to reset again before we next render. I'll add a comment about this.

Thanks for the review!
Comment 6 Adam Roben (:aroben) 2010-05-17 08:06:16 PDT
Committed r59610: <http://trac.webkit.org/changeset/59610>