Bug 39139

Summary: Pages that use hardware acceleration don't repaint after waking computer from sleep
Product: WebKit Reporter: Adam Roben (:aroben) <aroben>
Component: Layout and RenderingAssignee: Adam Roben (:aroben) <aroben>
Status: RESOLVED FIXED    
Severity: Normal CC: cmarrin, enrica, eric, simon.fraser
Priority: P2 Keywords: InRadar, PlatformOnly
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Windows XP   
URL: http://webkit.org/blog-files/3d-transforms/poster-circle.html
Bug Depends on: 39159    
Bug Blocks:    
Attachments:
Description Flags
Periodically try to reset a lost IDirect3DDevice9 until we succeed sullivan: review+

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 (no email) 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>