WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
140897
Prevent flicker when exiting fullscreen by synchronizing transactions.
https://bugs.webkit.org/show_bug.cgi?id=140897
Summary
Prevent flicker when exiting fullscreen by synchronizing transactions.
Jeremy Jones
Reported
2015-01-26 12:51:35 PST
Prevent flicker when exiting fullscreen by synchronizing transactions.
Attachments
Patch
(4.64 KB, patch)
2015-01-26 12:57 PST
,
Jeremy Jones
no flags
Details
Formatted Diff
Diff
Patch
(4.84 KB, patch)
2015-01-29 12:59 PST
,
Jeremy Jones
no flags
Details
Formatted Diff
Diff
Patch
(6.02 KB, patch)
2015-02-02 11:57 PST
,
Jeremy Jones
no flags
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Jeremy Jones
Comment 1
2015-01-26 12:57:55 PST
Created
attachment 245368
[details]
Patch
Jeremy Jones
Comment 2
2015-01-29 12:59:36 PST
Created
attachment 245642
[details]
Patch
Tim Horton
Comment 3
2015-01-30 15:01:39 PST
Comment on
attachment 245642
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=245642&action=review
> Source/WebCore/ChangeLog:8 > + Synchronize across CAContexts when moving the video layer between layer hierarcies.
spelling "hierarchies"
> Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1063 > + for (CAContext* context in [CAContext allContexts]) {
star's on the wrong side
> Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1064 > + if (!fencePort)
I'm not sure it's appropriate to fence all CAContexts, is it? We really just want to hit WebKit's and the remote layer's, right? Also, is the UIProcess' context really accessible from here? That seems vaguely surprising.
> Source/WebCore/platform/spi/cocoa/QuartzCoreSPI.h:60 > ++ (NSArray*)allContexts;
star's on the wrong side
Tim Horton
Comment 4
2015-01-30 15:02:10 PST
Oh, maybe you're synchronizing between two WebProcess-owned video-hosting CAContexts? In that case, can't you just hit both of them?
Jeremy Jones
Comment 5
2015-02-02 11:52:57 PST
(In reply to
comment #3
)
> Comment on
attachment 245642
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=245642&action=review
> > > Source/WebCore/ChangeLog:8 > > + Synchronize across CAContexts when moving the video layer between layer hierarcies. > > spelling "hierarchies"
Fixed.
> > > Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1063 > > + for (CAContext* context in [CAContext allContexts]) { > > star's on the wrong side
Fixed.
> > > Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1064 > > + if (!fencePort) > > I'm not sure it's appropriate to fence all CAContexts, is it? We really just > want to hit WebKit's and the remote layer's, right? > Also, is the UIProcess' context really accessible from here? That seems > vaguely surprising.
Now finds the root layer and and compares that against the CAContext's layer to make sure it fences necessary CAContexts.
> > > Source/WebCore/platform/spi/cocoa/QuartzCoreSPI.h:60 > > ++ (NSArray*)allContexts; > > star's on the wrong side
Fixed.
Jeremy Jones
Comment 6
2015-02-02 11:54:00 PST
(In reply to
comment #4
)
> Oh, maybe you're synchronizing between two WebProcess-owned video-hosting > CAContexts? In that case, can't you just hit both of them?
Exactly. There isn't a good way to go from CALayer to CAContext, so it now tries to match the root layer against the CAContext's layer.
Jeremy Jones
Comment 7
2015-02-02 11:57:13 PST
Created
attachment 245891
[details]
Patch
Tim Horton
Comment 8
2015-02-02 12:23:40 PST
Comment on
attachment 245891
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=245891&action=review
> Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1066 > + newRootLayer = m_videoInlineLayer.get();
It's too bad you don't have the PlatformCALayer(Remote) here and can't acquire the contexts directly from those. Is it possible to make that happen? It would be much prettier than this.
Jeremy Jones
Comment 9
2015-02-03 14:58:18 PST
(In reply to
comment #8
)
> Comment on
attachment 245891
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=245891&action=review
> > > Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1066 > > + newRootLayer = m_videoInlineLayer.get(); > > It's too bad you don't have the PlatformCALayer(Remote) here and can't > acquire the contexts directly from those. Is it possible to make that > happen? It would be much prettier than this.
Agree, but I can't think of an elegant way to get the appropriate contexts down to this layer. I'll file another bug to investigate that.
WebKit Commit Bot
Comment 10
2015-02-03 15:41:53 PST
Comment on
attachment 245891
[details]
Patch Clearing flags on attachment: 245891 Committed
r179574
: <
http://trac.webkit.org/changeset/179574
>
WebKit Commit Bot
Comment 11
2015-02-03 15:41:56 PST
All reviewed patches have been landed. Closing bug.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug