Bug 1491798- Schedule repaint if WebRender is updated by tab move r=mattwoodrow

This commit is contained in:
sotaro 2018-10-01 10:12:22 +09:00
Родитель 1a9c520c89
Коммит f28d78646a
3 изменённых файлов: 26 добавлений и 0 удалений

Просмотреть файл

@ -3210,6 +3210,25 @@ TabChild::InvalidateLayers()
FrameLayerBuilder::InvalidateAllLayers(lm);
}
void
TabChild::SchedulePaint()
{
nsCOMPtr<nsIDocShell> docShell = do_GetInterface(WebNavigation());
if (!docShell) {
return;
}
// We don't use TabChildBase::GetPresShell() here because that would create
// a content viewer if one doesn't exist yet. Creating a content viewer can
// cause JS to run, which we want to avoid. nsIDocShell::GetPresShell
// returns null if no content viewer exists yet.
if (nsCOMPtr<nsIPresShell> presShell = docShell->GetPresShell()) {
if (nsIFrame* root = presShell->GetRootFrame()) {
root->SchedulePaint();
}
}
}
void
TabChild::ReinitRendering()
{

Просмотреть файл

@ -540,6 +540,7 @@ public:
void ClearCachedResources();
void InvalidateLayers();
void SchedulePaint();
void ReinitRendering();
void ReinitRenderingForDeviceReset();

Просмотреть файл

@ -561,6 +561,12 @@ WebRenderLayerManager::WrUpdated()
{
mWebRenderCommandBuilder.ClearCachedResources();
DiscardLocalImages();
if (mWidget) {
if (dom::TabChild* tabChild = mWidget->GetOwningTabChild()) {
tabChild->SchedulePaint();
}
}
}
dom::TabGroup*