http://trac.webkit.org/changeset/120501
https://bugs.webkit.org/show_bug.cgi?id=89126
[skia] Fix is too heavy-handed
* platform/graphics/skia/ImageBufferSkia.cpp:
(WebCore::drawNeedsCopy):
* platform/graphics/skia/PlatformContextSkia.cpp:
(WebCore::PlatformContextSkia::PlatformContextSkia):
* platform/graphics/skia/PlatformContextSkia.h:
(PlatformContextSkia):
(WebCore::PlatformContextSkia::isDeferred):
(WebCore::PlatformContextSkia::setDeferred):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121283
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
BUGWK86592 LINUX : fast/loader/unload-form-about-blank.html = TIMEOUT PASS
BUGWK86592 LINUX : http/tests/xmlhttprequest/zero-length-response-sync.html = TIMEOUT PASS
+BUGWK89126 : platform/chromium/compositing/accelerated-drawing/svg-filters.html = IMAGE
+
// strange "Unexpected no expected results found" on cr-linux ews
BUGWK86600 LINUX : http/tests/cache/loaded-from-cache-after-reload-within-iframe.html = MISSING PASS
BUGWK86600 LINUX : http/tests/cache/loaded-from-cache-after-reload.html = MISSING PASS
+2012-06-26 James Robinson <jamesr@chromium.org>
+
+ Unreviewed, rolling out r120501.
+ http://trac.webkit.org/changeset/120501
+ https://bugs.webkit.org/show_bug.cgi?id=89126
+
+ [skia] Fix is too heavy-handed
+
+ * platform/graphics/skia/ImageBufferSkia.cpp:
+ (WebCore::drawNeedsCopy):
+ * platform/graphics/skia/PlatformContextSkia.cpp:
+ (WebCore::PlatformContextSkia::PlatformContextSkia):
+ * platform/graphics/skia/PlatformContextSkia.h:
+ (PlatformContextSkia):
+ (WebCore::PlatformContextSkia::isDeferred):
+ (WebCore::PlatformContextSkia::setDeferred):
+
2012-06-26 Julien Chaffraix <jchaffraix@webkit.org>
Crash in FixedTableLayout::layout
static bool drawNeedsCopy(GraphicsContext* src, GraphicsContext* dst)
{
- if (src == dst)
- return true;
- // If we're rendering into a deferred canvas, we need to make a deep copy of the source pixels because Skia does not
- // retain a reference to the actual pixels otherwise. We check if we're drawing into a deferred canvas by seeing if the
- // device's bitmap configuration is set or not - if it's not, then we must not have a bitmap target yet.
- return dst->platformContext()->canvas()->getDevice()->config() == SkBitmap::kNo_Config;
+ return dst->platformContext()->isDeferred() || src == dst;
}
void ImageBuffer::draw(GraphicsContext* context, ColorSpace styleColorSpace, const FloatRect& destRect, const FloatRect& srcRect,
, m_trackOpaqueRegion(false)
, m_printing(false)
, m_accelerated(false)
+ , m_deferred(false)
, m_drawingToImageBuffer(false)
{
m_stateStack.append(State());
bool isAccelerated() const { return m_accelerated; }
void setAccelerated(bool accelerated) { m_accelerated = accelerated; }
+ // True if this context is deferring draw calls to be executed later.
+ // We need to know this for context-to-context draws, in order to know if
+ // the source bitmap needs to be copied.
+ bool isDeferred() const { return m_deferred; }
+ void setDeferred(bool deferred) { m_deferred = deferred; }
+
void setTrackOpaqueRegion(bool track) { m_trackOpaqueRegion = track; }
// This will be an empty region unless tracking is enabled.
FloatSize m_imageResamplingHintDstSize;
bool m_printing;
bool m_accelerated;
+ bool m_deferred;
bool m_drawingToImageBuffer;
};