nsRefreshDriver continues to tick with VsyncRefreshDriverTimer when Firefox window is occluded
Categories
(Core :: Layout, defect)
Tracking
()
People
(Reporter: sotaro, Unassigned)
References
(Depends on 1 open bug, Blocks 1 open bug)
Details
(Keywords: regression)
Attachments
(1 file, 2 obsolete files)
|
55.60 KB,
patch
|
Details | Diff | Splinter Review |
Created from Bug 1924932 comment 67.
With the following STR, there were cases that nsRefreshDriver continued to tick with VsyncRefreshDriverTimer and Vsync keeps running. It seemed like a problem.
- [1] Start Firefox
- [2] Move to https://www.youtube.com/watch?v=LXb3EKWsInQ
- [3] Start video playback
- [4] Move the Firefox window to be occluded by other app window
| Reporter | ||
Comment 1•1 year ago
|
||
| Reporter | ||
Comment 2•1 year ago
•
|
||
With Attachment 9470695 [details] [diff], when the problem happened, PresShell::ComputeActiveness() returned true because "browserChild->IsPreservingLayers()" returned false. Then nsRefreshDriver was set active and it kept ticking.
| Reporter | ||
Comment 3•1 year ago
•
|
||
nsRefreshDriver::SetActivity() was changed by Bug 1847929. It might cause the regression.
| Reporter | ||
Updated•1 year ago
|
| Reporter | ||
Comment 5•1 year ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #3)
nsRefreshDriver::SetActivity() was changed by Bug 1847929. It might cause the regression.
Ah, it seems wrong from Bug 1924932 Comment 46, its regression happened around 112-114.
| Reporter | ||
Comment 6•1 year ago
|
||
Replace Attachment 9470695 [details] [diff] by this patch.
| Reporter | ||
Updated•1 year ago
|
| Reporter | ||
Updated•1 year ago
|
Comment 7•1 year ago
|
||
Do you still need me to look at this? If so please ni? me again.
When the widget becomes occluded you should end up here, which should end up here or here.
Maybe one of those codepaths doesn't deactivate the browser properly?
| Reporter | ||
Comment 8•1 year ago
|
||
(In reply to Emilio Cobos Álvarez (:emilio) from comment #7)
Do you still need me to look at this? If so please ni? me again.
When the widget becomes occluded you should end up here, which should end up here or here.
Maybe one of those codepaths doesn't deactivate the browser properly?
The above code patch was not used. The problem was caused by PreloadedBrowser.
PreloadedBrowser was created by NewTabPagePreloading.maybeCreatePreloadedBrowser(). And timer start was trigged by ActivityStreamMessageChannel.tabLoaded()
Comment 9•1 year ago
|
||
So, bug 1548683?
| Reporter | ||
Comment 10•1 year ago
|
||
| Reporter | ||
Comment 11•1 year ago
•
|
||
function calls are like the following.
browser.renderLayers = true;
->BrowserHost::SetRenderLayers()
->BrowserParent::SetRenderLayers()
->BrowserParent::SetRenderLayersInternal()
->BrowserParent::SendRenderLayers()
->// IPC
->BrowserChild::RecvRenderLayers()
->BrowserChild::UpdateVisibility()
->BrowserChild::MakeVisible()
->BrowserChild::PresShellActivenessMaybeChanged()
-----> PresShell::ComputeActiveness()
-----> PresShell::SetIsActive()
--------> nsRefreshDriver::SetActivity()
--------> nsRefreshDriver::EnsureTimerStarted()
| Reporter | ||
Comment 12•1 year ago
|
||
Then PreloadedBrowser always requests vsync enabled. It is not good.
| Reporter | ||
Comment 13•1 year ago
|
||
Replace Attachment 9470702 [details] [diff].
| Reporter | ||
Updated•1 year ago
|
Updated•1 year ago
|
| Reporter | ||
Comment 14•1 year ago
|
||
It might be better to add a workaround before fixing Bug 1548683.
Comment 15•1 year ago
|
||
This bug has been marked as a regression. Setting status flag for Nightly to affected.
Comment 16•1 year ago
|
||
(setting old version flags to wontfix, to make it clear that they were also affected, since this regressed before 115 per comment 5. Otherwise bugdash surfaces this as a potential new regression in current nightly, which it's not.)
Updated•1 year ago
|
Comment 17•1 year ago
|
||
The severity field is not set for this bug.
:TYLin, could you have a look please?
For more information, please visit BugBot documentation.
Comment 18•1 year ago
|
||
This is an old regression, so S3 feels right for now.
Updated•1 year ago
|
Description
•