Title: [218031] trunk/Source/WebCore
- Revision
- 218031
- Author
- [email protected]
- Date
- 2017-06-09 17:37:06 -0700 (Fri, 09 Jun 2017)
Log Message
Unreviewed, rolling out r218003.
This change caused assertion failures in existing LayoutTests.
Reverted changeset:
"Image should clear its ImageObserver* when CachedImage
releases the last reference to its RefCounted<ImageObserver>"
https://bugs.webkit.org/show_bug.cgi?id=173077
http://trac.webkit.org/changeset/218003
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (218030 => 218031)
--- trunk/Source/WebCore/ChangeLog 2017-06-10 00:08:28 UTC (rev 218030)
+++ trunk/Source/WebCore/ChangeLog 2017-06-10 00:37:06 UTC (rev 218031)
@@ -1,3 +1,16 @@
+2017-06-09 Ryan Haddad <[email protected]>
+
+ Unreviewed, rolling out r218003.
+
+ This change caused assertion failures in existing LayoutTests.
+
+ Reverted changeset:
+
+ "Image should clear its ImageObserver* when CachedImage
+ releases the last reference to its RefCounted<ImageObserver>"
+ https://bugs.webkit.org/show_bug.cgi?id=173077
+ http://trac.webkit.org/changeset/218003
+
2017-06-09 Jiewen Tan <[email protected]>
[WebCrypto] Remove unsupported CryptoAlgorithmIdentifier
Modified: trunk/Source/WebCore/loader/cache/CachedImage.cpp (218030 => 218031)
--- trunk/Source/WebCore/loader/cache/CachedImage.cpp 2017-06-10 00:08:28 UTC (rev 218030)
+++ trunk/Source/WebCore/loader/cache/CachedImage.cpp 2017-06-10 00:37:06 UTC (rev 218031)
@@ -101,7 +101,7 @@
m_image = image.m_image;
m_imageObserver = image.m_imageObserver;
if (m_imageObserver)
- m_imageObserver->cachedImages().add(this);
+ m_imageObserver->add(*this);
if (m_image && is<SVGImage>(*m_image))
m_svgImageCache = std::make_unique<SVGImageCache>(&downcast<SVGImage>(*m_image));
@@ -326,7 +326,8 @@
CachedImage::CachedImageObserver::CachedImageObserver(CachedImage& image)
{
- m_cachedImages.add(&image);
+ m_cachedImages.reserveInitialCapacity(1);
+ m_cachedImages.append(&image);
}
void CachedImage::CachedImageObserver::decodedSizeChanged(const Image& image, long long delta)
@@ -366,21 +367,10 @@
inline void CachedImage::clearImage()
{
- if (!m_image)
- return;
-
if (m_imageObserver) {
- m_imageObserver->cachedImages().remove(this);
-
- if (m_imageObserver->cachedImages().isEmpty()) {
- ASSERT(m_image->hasOneRef());
- ASSERT(m_imageObserver->hasOneRef());
- m_image->setImageObserver(nullptr);
- }
-
+ m_imageObserver->remove(*this);
m_imageObserver = nullptr;
}
-
m_image = nullptr;
}
Modified: trunk/Source/WebCore/loader/cache/CachedImage.h (218030 => 218031)
--- trunk/Source/WebCore/loader/cache/CachedImage.h 2017-06-10 00:08:28 UTC (rev 218030)
+++ trunk/Source/WebCore/loader/cache/CachedImage.h 2017-06-10 00:37:06 UTC (rev 218031)
@@ -120,14 +120,14 @@
class CachedImageObserver final : public RefCounted<CachedImageObserver>, public ImageObserver {
public:
static Ref<CachedImageObserver> create(CachedImage& image) { return adoptRef(*new CachedImageObserver(image)); }
- HashSet<CachedImage*>& cachedImages() { return m_cachedImages; }
- const HashSet<CachedImage*>& cachedImages() const { return m_cachedImages; }
+ void add(CachedImage& image) { m_cachedImages.append(&image); }
+ void remove(CachedImage& image) { m_cachedImages.removeFirst(&image); }
private:
explicit CachedImageObserver(CachedImage&);
// ImageObserver API
- URL sourceUrl() const override { return !m_cachedImages.isEmpty() ? (*m_cachedImages.begin())->url() : URL(); }
+ URL sourceUrl() const override { return !m_cachedImages.isEmpty() ? m_cachedImages[0]->url() : URL(); }
void decodedSizeChanged(const Image&, long long delta) final;
void didDraw(const Image&) final;
@@ -135,7 +135,7 @@
void imageFrameAvailable(const Image&, ImageAnimatingState, const IntRect* changeRect = nullptr) final;
void changedInRect(const Image&, const IntRect*) final;
- HashSet<CachedImage*> m_cachedImages;
+ Vector<CachedImage*> m_cachedImages;
};
void decodedSizeChanged(const Image&, long long delta);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes