Index: Source/modules/encryptedmedia/MediaKeySession.cpp |
diff --git a/Source/modules/encryptedmedia/MediaKeySession.cpp b/Source/modules/encryptedmedia/MediaKeySession.cpp |
index 28101cc1ba78be64fa61952a187fc2b58d656ec4..0bc78cb793a0b1449f5fb572456218ac84acdc2b 100644 |
--- a/Source/modules/encryptedmedia/MediaKeySession.cpp |
+++ b/Source/modules/encryptedmedia/MediaKeySession.cpp |
@@ -84,7 +84,12 @@ MediaKeySession::MediaKeySession(ExecutionContext* context, blink::WebContentDec |
MediaKeySession::~MediaKeySession() |
{ |
m_session.clear(); |
+#if !ENABLE(OILPAN) |
+ // MediaKeySession and m_asyncEventQueue always become unreachable |
+ // together. So MediaKeySession and m_asyncEventQueue are destructed in the |
+ // same GC. We don't need to call cancelAllEvents explicitly in Oilpan. |
m_asyncEventQueue->cancelAllEvents(); |
+#endif |
} |
void MediaKeySession::setError(MediaKeyError* error) |
@@ -272,6 +277,7 @@ void MediaKeySession::stop() |
void MediaKeySession::trace(Visitor* visitor) |
{ |
+ visitor->trace(m_asyncEventQueue); |
visitor->trace(m_keys); |
EventTargetWithInlineData::trace(visitor); |
} |