diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index 8764a7159cba..3fa8330124c3 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,21 @@ +2017-08-25 Miguel Gomez + + [GTK] Completely garbled display in Transifex in accelerated compositing mode + https://bugs.webkit.org/show_bug.cgi?id=174632 + + Reviewed by Michael Catanzaro. + + Remove the copy constructor from PlatformContextCairo::State. This is because it will be used by WTF::Vector + to copy the instances around when allocating new memory, but it doesn't copy the m_imageMaskInformation + attribute, so it will be lost when the Vector reallocates its contents. When this happens, renderings that use + GraphicsContext::clipToImageBuffer() fail to render properly. + + Covered by existent tests. + + * platform/graphics/cairo/PlatformContextCairo.cpp: + (WebCore::PlatformContextCairo::State::State): + (WebCore::PlatformContextCairo::save): + 2017-08-24 Alex Christensen Stop using PolicyCallback for new window policies diff --git a/Source/WebCore/platform/graphics/cairo/PlatformContextCairo.cpp b/Source/WebCore/platform/graphics/cairo/PlatformContextCairo.cpp index 14d339b6bf00..53eae78e2ef7 100644 --- a/Source/WebCore/platform/graphics/cairo/PlatformContextCairo.cpp +++ b/Source/WebCore/platform/graphics/cairo/PlatformContextCairo.cpp @@ -68,9 +68,9 @@ class PlatformContextCairo::State { { } - State(const State& state) - : m_globalAlpha(state.m_globalAlpha) - , m_imageInterpolationQuality(state.m_imageInterpolationQuality) + State(float globalAlpha, InterpolationQuality imageInterpolationQuality) + : m_globalAlpha(globalAlpha) + , m_imageInterpolationQuality(imageInterpolationQuality) { // We do not copy m_imageMaskInformation because otherwise it would be applied // more than once during subsequent calls to restore(). @@ -110,7 +110,7 @@ PlatformContextCairo::~PlatformContextCairo() void PlatformContextCairo::save() { - m_stateStack.append(State(*m_state)); + m_stateStack.append(State(m_state->m_globalAlpha, m_state->m_imageInterpolationQuality)); m_state = &m_stateStack.last(); cairo_save(m_cr.get());