Bug 1136487: Destroy the compositors for all windows when any window detects a device reset. r=jrmuizel

This commit is contained in:
Bas Schouten 2015-02-25 18:04:18 +00:00
Родитель e4d15a45bb
Коммит c7306e4a06
3 изменённых файлов: 12 добавлений и 2 удалений

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

@ -6538,6 +6538,15 @@ bool nsWindow::AutoErase(HDC dc)
return false;
}
void
nsWindow::ClearCompositor(nsWindow* aWindow)
{
if (aWindow->mLayerManager) {
aWindow->mLayerManager = nullptr;
aWindow->DestroyCompositor();
}
}
bool
nsWindow::ShouldUseOffMainThreadCompositing()
{

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

@ -238,6 +238,8 @@ public:
*/
virtual bool AutoErase(HDC dc);
static void ClearCompositor(nsWindow* aWindow);
/**
* AssociateDefaultIMC() associates or disassociates the default IMC for
* the window.

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

@ -193,8 +193,7 @@ bool nsWindow::OnPaint(HDC aDC, uint32_t aNestingLevel)
if (gfxWindowsPlatform::GetPlatform()->DidRenderingDeviceReset()) {
gfxWindowsPlatform::GetPlatform()->UpdateRenderMode();
mLayerManager = nullptr;
DestroyCompositor();
EnumAllWindows(ClearCompositor);
return false;
}