Skip to content

Commit 91fbefa

Browse files
committed
[PageLifecycle] Release Acc Canvas ImageBuffer on suspension.
1 parent 8fe2e48 commit 91fbefa

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

Source/WebCore/html/HTMLCanvasElement.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1065,6 +1065,19 @@ bool HTMLCanvasElement::virtualHasPendingActivity() const
10651065
return false;
10661066
}
10671067

1068+
void HTMLCanvasElement::suspend(ReasonForSuspension reason)
1069+
{
1070+
if (reason != ReasonForSuspension::BackForwardCache)
1071+
return;
1072+
1073+
if (m_context && m_context->is2d() && m_context->isAccelerated()) {
1074+
m_hasCreatedImageBuffer = false;
1075+
setImageBuffer(nullptr);
1076+
resetGraphicsContextState();
1077+
downcast<CanvasRenderingContext2D>(*m_context).reset();
1078+
}
1079+
}
1080+
10681081
void HTMLCanvasElement::eventListenersDidChange()
10691082
{
10701083
#if ENABLE(WEBGL)

Source/WebCore/html/HTMLCanvasElement.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,8 @@ class HTMLCanvasElement final : public HTMLElement, public CanvasBase, public Ac
149149
// ActiveDOMObject.
150150
const char* activeDOMObjectName() const final;
151151
bool virtualHasPendingActivity() const final;
152+
void suspend(ReasonForSuspension) final;
153+
152154

153155
// EventTarget.
154156
void eventListenersDidChange() final;

0 commit comments

Comments
 (0)