| Index: Source/core/css/CSSSegmentedFontFace.cpp
|
| diff --git a/Source/core/css/CSSSegmentedFontFace.cpp b/Source/core/css/CSSSegmentedFontFace.cpp
|
| index 3cc8fa56b3bf03986b80d1be9c3f5ae5d89c47e6..a2cad6411697ee17e780179e0b10cb63102cb9a7 100644
|
| --- a/Source/core/css/CSSSegmentedFontFace.cpp
|
| +++ b/Source/core/css/CSSSegmentedFontFace.cpp
|
| @@ -46,16 +46,18 @@ CSSSegmentedFontFace::CSSSegmentedFontFace(CSSFontSelector* fontSelector)
|
|
|
| CSSSegmentedFontFace::~CSSSegmentedFontFace()
|
| {
|
| - dispose();
|
| + pruneTable();
|
| }
|
|
|
| +// FIXME(oilpan): Move CSSFontFaceSource and CSSFontSelector to the managed heap.
|
| +// Then all of CSSFontSelector, CSSSegmentedFontFace, CSSFontFace and CSSFontFaceSource
|
| +// die in the same round of GC, and thus we don't need to call dispose().
|
| void CSSSegmentedFontFace::dispose()
|
| {
|
| pruneTable();
|
| unsigned size = m_fontFaces.size();
|
| for (unsigned i = 0; i < size; i++)
|
| - m_fontFaces[i]->removedFromSegmentedFontFace(Handle<CSSSegmentedFontFace>(this));
|
| - m_fontFaces.clear();
|
| + m_fontFaces[i]->dispose();
|
| m_fontSelector = 0;
|
| }
|
|
|
| @@ -79,7 +81,7 @@ bool CSSSegmentedFontFace::isValid() const
|
| return false;
|
| }
|
|
|
| -void CSSSegmentedFontFace::fontLoaded(CSSFontFace*)
|
| +void CSSSegmentedFontFace::fontLoaded(Handle<CSSFontFace>)
|
| {
|
| pruneTable();
|
|
|
| @@ -95,7 +97,7 @@ void CSSSegmentedFontFace::fontLoaded(CSSFontFace*)
|
| }
|
| }
|
|
|
| -void CSSSegmentedFontFace::appendFontFace(PassRefPtr<CSSFontFace> fontFace)
|
| +void CSSSegmentedFontFace::appendFontFace(Handle<CSSFontFace> fontFace)
|
| {
|
| pruneTable();
|
| fontFace->addedToSegmentedFontFace(Handle<CSSSegmentedFontFace>(this));
|
| @@ -190,4 +192,9 @@ void CSSSegmentedFontFace::loadFont(const FontDescription& fontDescription, Pass
|
| }
|
| }
|
|
|
| +void CSSSegmentedFontFace::accept(Visitor* visitor) const
|
| +{
|
| + visitor->visit(m_fontFaces);
|
| +}
|
| +
|
| }
|
|
|