- qtwebkit-2.3.3
- include some post 2.3.3 commits/fixes
This commit is contained in:
Rex Dieter 2013-10-03 18:08:32 -05:00
parent 8f60fcf973
commit 30bd45bb64
11 changed files with 717 additions and 16 deletions

3
.gitignore vendored
View File

@ -1,3 +1,2 @@
/qtwebkit-developers-qtwebkit-qtwebkit-2.1.1.tar.xz
/qtwebkit-2.2.2-source.tar.xz
/qtwebkit-2.3.2.tar.xz
/qtwebkit-2.3.3.tar.xz

View File

@ -0,0 +1,81 @@
From 14dca2f9fc4fd1a370cdf7d0d690472e1f56da8b Mon Sep 17 00:00:00 2001
From: ChangSeok Oh <shivamidow@gmail.com>
Date: Tue, 3 Sep 2013 13:51:29 +0200
Subject: [PATCH 2/9] [Texmap][GTK] The poster-circle doesn't appear.
https://bugs.webkit.org/show_bug.cgi?id=106672
Patch by ChangSeok Oh <shivamidow@gmail.com> on 2013-01-21
Reviewed by Noam Rosenthal.
Source/WebCore:
We need to call setNeedsDisplay to redraw GraphicsLayer after we set drawsContent
a new value for the layer. Otherwise we can't get a chance for first drawing the layer.
Test: compositing/visibility/visibility-composited-animation.html
* platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::flushCompositingStateForThisLayerOnly):
LayoutTests:
A new pixel test is added. It tests if animated layer is drawn for the first scene.
* compositing/visibility/visibility-composited-animation-expected.png: Added.
* compositing/visibility/visibility-composited-animation-expected.txt: Added.
* compositing/visibility/visibility-composited-animation.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@140347 268f45cc-cd09-0410-ab3c-d52691b4dbfc
---
LayoutTests/ChangeLog | 13 +++++++
.../visibility-composited-animation-expected.txt | 2 +
.../visibility-composited-animation.html | 45 ++++++++++++++++++++++
Source/WebCore/ChangeLog | 15 ++++++++
.../graphics/texmap/TextureMapperLayer.cpp | 3 ++
5 files changed, 78 insertions(+)
create mode 100644 LayoutTests/compositing/visibility/visibility-composited-animation-expected.txt
create mode 100644 LayoutTests/compositing/visibility/visibility-composited-animation.html
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index a220029..16d902c 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -838,6 +838,21 @@
* dom/Element.h:
(Element):
+2013-01-21 ChangSeok Oh <shivamidow@gmail.com>
+
+ [Texmap][GTK] The poster-circle doesn't appear.
+ https://bugs.webkit.org/show_bug.cgi?id=106672
+
+ Reviewed by Noam Rosenthal.
+
+ We need to call setNeedsDisplay to redraw GraphicsLayer after we set drawsContent
+ a new value for the layer. Otherwise we can't get a chance for first drawing the layer.
+
+ Test: compositing/visibility/visibility-composited-animation.html
+
+ * platform/graphics/texmap/TextureMapperLayer.cpp:
+ (WebCore::TextureMapperLayer::flushCompositingStateForThisLayerOnly):
+
2013-01-15 Allan Sandfeld Jensen <allan.jensen@digia.com>
[Qt][CSS Shaders] Make custom filter render in Wk1 mode
diff --git a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
index d2a10aa..4024333 100644
--- a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
+++ b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
@@ -400,6 +400,9 @@ void TextureMapperLayer::flushCompositingStateSelf(GraphicsLayerTextureMapper* g
m_size = graphicsLayer->size();
+ if ((changeMask & DrawsContentChange) && graphicsLayer->drawsContent())
+ graphicsLayer->setNeedsDisplay();
+
if (changeMask & MaskLayerChange) {
if (TextureMapperLayer* layer = toTextureMapperLayer(graphicsLayer->maskLayer()))
layer->m_effectTarget = this;
--
1.8.3.1

View File

@ -0,0 +1,80 @@
From 974c1dfeb826cc6d6e96d316d63bf13c645b1ac8 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@digia.com>
Date: Mon, 9 Sep 2013 14:35:31 +0200
Subject: [PATCH 3/9] [Qt] Tiled-backing store not clipped to frame or visible
rect https://bugs.webkit.org/show_bug.cgi?id=120606
Reviewed by Jocelyn Turcotte.
Clip painting from the tiled-backing store to the frame rect.
* WebCoreSupport/QWebFrameAdapter.cpp:
(QWebFrameAdapter::renderFromTiledBackingStore):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154983 268f45cc-cd09-0410-ab3c-d52691b4dbfc
---
Source/WebKit/qt/Api/qwebframe.cpp | 17 ++++++++---------
Source/WebKit/qt/ChangeLog | 12 ++++++++++++
2 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/Source/WebKit/qt/Api/qwebframe.cpp b/Source/WebKit/qt/Api/qwebframe.cpp
index f37457e..6205a9c 100644
--- a/Source/WebKit/qt/Api/qwebframe.cpp
+++ b/Source/WebKit/qt/Api/qwebframe.cpp
@@ -200,25 +200,24 @@ void QWebFramePrivate::renderFromTiledBackingStore(GraphicsContext* context, con
if (vector.isEmpty())
return;
- QPainter* painter = context->platformContext();
-
WebCore::FrameView* view = frame->view();
-
+
int scrollX = view->scrollX();
int scrollY = view->scrollY();
- context->translate(-scrollX, -scrollY);
+ QRect frameRect = view->frameRect();
for (int i = 0; i < vector.size(); ++i) {
const QRect& clipRect = vector.at(i);
- painter->save();
-
- QRect rect = clipRect.translated(scrollX, scrollY);
- painter->setClipRect(rect, Qt::IntersectClip);
+ context->save();
+ QRect rect = clipRect.intersected(frameRect);
+ context->translate(-scrollX, -scrollY);
+ rect.translate(scrollX, scrollY);
+ context->clip(rect);
frame->tiledBackingStore()->paint(context, rect);
- painter->restore();
+ context->restore();
}
#if USE(ACCELERATED_COMPOSITING)
diff --git a/Source/WebKit/qt/ChangeLog b/Source/WebKit/qt/ChangeLog
index ecb4acb..62f60c5 100644
--- a/Source/WebKit/qt/ChangeLog
+++ b/Source/WebKit/qt/ChangeLog
@@ -1,3 +1,15 @@
+2013-09-03 Allan Sandfeld Jensen <allan.jensen@digia.com>
+
+ [Qt] Tiled-backing store not clipped to frame or visible rect
+ https://bugs.webkit.org/show_bug.cgi?id=120606
+
+ Reviewed by Jocelyn Turcotte.
+
+ Clip painting from the tiled-backing store to the frame rect.
+
+ * WebCoreSupport/QWebFrameAdapter.cpp:
+ (QWebFrameAdapter::renderFromTiledBackingStore):
+
2013-06-05 Allan Sandfeld Jensen <allan.jensen@digia.com>
[Qt] Handle Return key without key text
--
1.8.3.1

View File

@ -0,0 +1,66 @@
From b2a2856f9102515e9a9a048655f08d9c8152b179 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@digia.com>
Date: Mon, 9 Sep 2013 15:00:54 +0200
Subject: [PATCH 4/9] [Qt] Images scaled poorly on composited canvas
https://bugs.webkit.org/show_bug.cgi?id=120632
Reviewed by Jocelyn Turcotte.
Explicitly set a imageInterpolationQuality on the TextureMapper, because
InterpolationDefault may be interpreted differently by nested GraphicsContexts.
* WebCoreSupport/TextureMapperLayerClientQt.cpp:
(TextureMapperLayerClientQt::renderCompositedLayers):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154985 268f45cc-cd09-0410-ab3c-d52691b4dbfc
---
Source/WebKit/qt/Api/qwebframe.cpp | 9 ++++++++-
Source/WebKit/qt/ChangeLog | 13 +++++++++++++
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/Source/WebKit/qt/Api/qwebframe.cpp b/Source/WebKit/qt/Api/qwebframe.cpp
index 6205a9c..b54b9c0 100644
--- a/Source/WebKit/qt/Api/qwebframe.cpp
+++ b/Source/WebKit/qt/Api/qwebframe.cpp
@@ -234,7 +234,14 @@ void QWebFramePrivate::renderCompositedLayers(GraphicsContext* context, const In
return;
textureMapper->setGraphicsContext(context);
- textureMapper->setImageInterpolationQuality(context->imageInterpolationQuality());
+ // GraphicsContext::imageInterpolationQuality is always InterpolationDefault here,
+ // but 'default' may be interpreted differently due to a different backend QPainter,
+ // so we need to set an explicit imageInterpolationQuality.
+ if (context->platformContext()->renderHints() & QPainter::SmoothPixmapTransform)
+ textureMapper->setImageInterpolationQuality(WebCore::InterpolationMedium);
+ else
+ textureMapper->setImageInterpolationQuality(WebCore::InterpolationNone);
+
textureMapper->setTextDrawingMode(context->textDrawingMode());
QPainter* painter = context->platformContext();
const QTransform transform = painter->worldTransform();
diff --git a/Source/WebKit/qt/ChangeLog b/Source/WebKit/qt/ChangeLog
index 62f60c5..ec00b6e 100644
--- a/Source/WebKit/qt/ChangeLog
+++ b/Source/WebKit/qt/ChangeLog
@@ -1,5 +1,18 @@
2013-09-03 Allan Sandfeld Jensen <allan.jensen@digia.com>
+ [Qt] Images scaled poorly on composited canvas
+ https://bugs.webkit.org/show_bug.cgi?id=120632
+
+ Reviewed by Jocelyn Turcotte.
+
+ Explicitly set a imageInterpolationQuality on the TextureMapper, because
+ InterpolationDefault may be interpreted differently by nested GraphicsContexts.
+
+ * WebCoreSupport/TextureMapperLayerClientQt.cpp:
+ (TextureMapperLayerClientQt::renderCompositedLayers):
+
+2013-09-03 Allan Sandfeld Jensen <allan.jensen@digia.com>
+
[Qt] Tiled-backing store not clipped to frame or visible rect
https://bugs.webkit.org/show_bug.cgi?id=120606
--
1.8.3.1

View File

@ -1,12 +1,21 @@
From 9fe66e8b769e6fe1c66b8d00b6c8e6403d9d6303 Mon Sep 17 00:00:00 2001
From: Konstantin Tokarev <ktokarev@smartlabs.tv>
Date: Tue, 10 Sep 2013 10:57:29 +0200
Subject: [PATCH 5/9] Port of r118587 to TextBreakIteratorQt.cpp.
---
.../WebCore/platform/text/qt/TextBreakIteratorQt.cpp | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/Source/WebCore/platform/text/qt/TextBreakIteratorQt.cpp b/Source/WebCore/platform/text/qt/TextBreakIteratorQt.cpp
index 0d9d48d..0917b03 100644
index 0d9d48d..96436a7 100644
--- a/Source/WebCore/platform/text/qt/TextBreakIteratorQt.cpp
+++ b/Source/WebCore/platform/text/qt/TextBreakIteratorQt.cpp
@@ -25,6 +25,7 @@
#include <algorithm>
#include <qdebug.h>
#include <wtf/Atomics.h>
+#include <QMutex>
+#include <wtf/ThreadingPrimitives.h>
// #define DEBUG_TEXT_ITERATORS
#ifdef DEBUG_TEXT_ITERATORS
@ -19,15 +28,15 @@ index 0d9d48d..0917b03 100644
+#if ENABLE(COMPARE_AND_SWAP)
+ return weakCompareAndSwap(reinterpret_cast<void**>(&nonSharedCharacterBreakIterator), expected, newValue);
+#else
+ DEFINE_STATIC_LOCAL(QMutex, nonSharedCharacterBreakIteratorMutex, ());
+ QMutexLocker locker(&nonSharedCharacterBreakIteratorMutex);
+ DEFINE_STATIC_LOCAL(Mutex, nonSharedCharacterBreakIteratorMutex, ());
+ MutexLocker locker(nonSharedCharacterBreakIteratorMutex);
+ if (nonSharedCharacterBreakIterator != expected)
+ return false;
+ nonSharedCharacterBreakIterator = newValue;
+ return true;
+#endif
+ }
+
+
NonSharedCharacterBreakIterator::NonSharedCharacterBreakIterator(const UChar* buffer, int length)
{
m_iterator = nonSharedCharacterBreakIterator;
@ -41,7 +50,10 @@ index 0d9d48d..0917b03 100644
NonSharedCharacterBreakIterator::~NonSharedCharacterBreakIterator()
{
- if (!weakCompareAndSwap(reinterpret_cast<void**>(&nonSharedCharacterBreakIterator), 0, m_iterator))
+ if (!compareAndSwapNonSharedCharacterBreakIterator(0, m_iterator))
+ if (!compareAndSwapNonSharedCharacterBreakIterator(m_iterator, 0))
delete m_iterator;
}
--
1.8.3.1

View File

@ -0,0 +1,60 @@
From 0609a6521a7750cc9b7ba9882034b47c754ca538 Mon Sep 17 00:00:00 2001
From: Gabor Rapcsanyi <rgabor@webkit.org>
Date: Tue, 10 Sep 2013 16:16:16 +0200
Subject: [PATCH 6/9] JSC ARM traditional failing on Octane NavierStokes test
https://bugs.webkit.org/show_bug.cgi?id=115626
Reviewed by Zoltan Herczeg.
Change the ARM traditional assembler to use double precision on value
conversions.
* assembler/ARMAssembler.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149601 268f45cc-cd09-0410-ab3c-d52691b4dbfc
---
Source/JavaScriptCore/ChangeLog | 12 ++++++++++++
Source/JavaScriptCore/assembler/ARMAssembler.h | 4 ++--
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog
index 4841d37..669ed57 100644
--- a/Source/JavaScriptCore/ChangeLog
+++ b/Source/JavaScriptCore/ChangeLog
@@ -17,6 +17,18 @@
(UdOptableXmlParser.parse):
(printFn):
+2013-05-06 Gabor Rapcsanyi <rgabor@webkit.org>
+
+ JSC ARM traditional failing on Octane NavierStokes test
+ https://bugs.webkit.org/show_bug.cgi?id=115626
+
+ Reviewed by Zoltan Herczeg.
+
+ Change the ARM traditional assembler to use double precision on value
+ conversions.
+
+ * assembler/ARMAssembler.h:
+
2013-04-23 Allan Sandfeld Jensen <allan.jensen@digia.com>
REGRESSION(r148790) Made 7 tests fail on x86 32bit
diff --git a/Source/JavaScriptCore/assembler/ARMAssembler.h b/Source/JavaScriptCore/assembler/ARMAssembler.h
index ebab46d..c03fc47 100644
--- a/Source/JavaScriptCore/assembler/ARMAssembler.h
+++ b/Source/JavaScriptCore/assembler/ARMAssembler.h
@@ -163,8 +163,8 @@ namespace JSC {
VMOV_VFP32 = 0x0e000a10,
VMOV_ARM32 = 0x0e100a10,
VCVT_F64_S32 = 0x0eb80bc0,
- VCVT_S32_F64 = 0x0ebd0b40,
- VCVT_U32_F64 = 0x0ebc0b40,
+ VCVT_S32_F64 = 0x0ebd0bc0,
+ VCVT_U32_F64 = 0x0ebc0bc0,
VCVT_F32_F64 = 0x0eb70bc0,
VCVT_F64_F32 = 0x0eb70ac0,
VMRS_APSR = 0x0ef1fa10,
--
1.8.3.1

View File

@ -0,0 +1,69 @@
From 41c7cbdead4d77254bf59397875dcc5cbb1e0a9d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20Br=C3=BCning?= <michael.bruning@digia.com>
Date: Wed, 18 Sep 2013 10:42:53 +0200
Subject: [PATCH 7/9] Correct range used for Emoji checks.
https://bugs.webkit.org/show_bug.cgi?id=121486
Reviewed by Allan Sandfeld Jensen.
Found and reported by David Binderman via Qt bug tracker.
The check if a character was in the Emoji range always evaluated to
false due to the upper range limit being lower than the lower limit.
Changed the upper limit to the highest assigned character from the
"Transport and Map Symbols" (0x1F6C5) as that seems to have been the
intended upper range limit of this check.
* platform/graphics/Font.cpp:
(WebCore::Font::isCJKIdeographOrSymbol):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155951 268f45cc-cd09-0410-ab3c-d52691b4dbfc
---
Source/WebCore/ChangeLog | 19 +++++++++++++++++++
Source/WebCore/platform/graphics/Font.cpp | 2 +-
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 16d902c..75c29ab 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2013-09-17 Michael Brüning <michael.bruning@digia.com>
+
+ Correct range used for Emoji checks.
+ https://bugs.webkit.org/show_bug.cgi?id=121486
+
+ Reviewed by Allan Sandfeld Jensen.
+
+ Found and reported by David Binderman via Qt bug tracker.
+
+ The check if a character was in the Emoji range always evaluated to
+ false due to the upper range limit being lower than the lower limit.
+
+ Changed the upper limit to the highest assigned character from the
+ "Transport and Map Symbols" (0x1F6C5) as that seems to have been the
+ intended upper range limit of this check.
+
+ * platform/graphics/Font.cpp:
+ (WebCore::Font::isCJKIdeographOrSymbol):
+
2013-08-19 Allan Sandfeld Jensen <allan.jensen@digia.com>
[Qt] QtWebKit (using the Arora browser) displays the border radii (radius) of a button very ugly
diff --git a/Source/WebCore/platform/graphics/Font.cpp b/Source/WebCore/platform/graphics/Font.cpp
index fd3e414..e0963f6 100644
--- a/Source/WebCore/platform/graphics/Font.cpp
+++ b/Source/WebCore/platform/graphics/Font.cpp
@@ -616,7 +616,7 @@ bool Font::isCJKIdeographOrSymbol(UChar32 c)
return true;
// Emoji.
- if (c >= 0x1F200 && c <= 0x1F6F)
+ if (c >= 0x1F200 && c <= 0x1F6C5)
return true;
return isCJKIdeograph(c);
--
1.8.3.1

View File

@ -0,0 +1,42 @@
From c2e59a0a266e61e6688311df9aadadbb0eaf997b Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@digia.com>
Date: Thu, 26 Sep 2013 13:40:03 +0200
Subject: [PATCH 8/9] [Qt] RepaintRequested signal sometimes not emitted
https://bugs.webkit.org/show_bug.cgi?id=121790
Reviewed by Simon Hausmann.
We should also emit repaintRequested after calling PageClient::update().
* WidgetSupport/PageClientQt.cpp:
(WebCore::PageClientQWidget::repaintViewport):
(WebCore::PageClientQGraphicsWidget::repaintViewport):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156329 268f45cc-cd09-0410-ab3c-d52691b4dbfc
---
Source/WebKit/qt/WebCoreSupport/PageClientQt.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Source/WebKit/qt/WebCoreSupport/PageClientQt.cpp b/Source/WebKit/qt/WebCoreSupport/PageClientQt.cpp
index 9979401..a33fb1c 100644
--- a/Source/WebKit/qt/WebCoreSupport/PageClientQt.cpp
+++ b/Source/WebKit/qt/WebCoreSupport/PageClientQt.cpp
@@ -162,6 +162,7 @@ void PageClientQWidget::syncLayers(Timer<PageClientQWidget>*)
if (TextureMapperLayerClient->rootLayer()->descendantsOrSelfHaveRunningAnimations() && !syncTimer.isActive())
syncTimer.startOneShot(1.0 / 60.0);
update(view->rect());
+ QMetaObject::invokeMethod(page, "repaintRequested", Qt::QueuedConnection, Q_ARG(QRect, view->rect()));
}
#endif
@@ -294,6 +295,7 @@ void PageClientQGraphicsWidget::syncLayers()
if (TextureMapperLayerClient->rootLayer()->descendantsOrSelfHaveRunningAnimations() && !syncTimer.isActive())
syncTimer.startOneShot(1.0 / 60.0);
update(view->boundingRect().toAlignedRect());
+ QMetaObject::invokeMethod(page, "repaintRequested", Qt::QueuedConnection, Q_ARG(QRect, view->boundingRect().toAlignedRect()));
}
void PageClientQGraphicsWidget::setRootGraphicsLayer(GraphicsLayer* layer)
--
1.8.3.1

View File

@ -0,0 +1,276 @@
From fa54af90c55c5264e2e2510a24311a77c9e569b0 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@digia.com>
Date: Thu, 26 Sep 2013 13:43:10 +0200
Subject: [PATCH 9/9] [TexMap] Remove ParentChange in TextureMapperLayer.
https://bugs.webkit.org/show_bug.cgi?id=105494
Patch by Huang Dongsung <luxtella@company100.net> on 2012-12-20
Reviewed by Noam Rosenthal.
ParentChange is useless, because ChildrenChange is enough. In addition,
GraphicsLayer uses setParent() method internally. This patch copies
GraphicsLayer::setChildren() into TextureMapperLayer::setChildren().
No new tests. Covered by existing tests.
* platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
(WebCore):
(WebCore::GraphicsLayerTextureMapper::setChildren):
Match the similar style of replaceChild().
* platform/graphics/texmap/GraphicsLayerTextureMapper.h:
(GraphicsLayerTextureMapper):
* platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::flushCompositingStateForThisLayerOnly):
(WebCore::TextureMapperLayer::setChildren):
Copied from GraphicsLayer::setChildren().
(WebCore):
(WebCore::TextureMapperLayer::addChild):
Copied from GraphicsLayer::addChild().
(WebCore::TextureMapperLayer::removeFromParent):
Copied from GraphicsLayer::removeFromParent().
(WebCore::TextureMapperLayer::removeAllChildren):
Copied from GraphicsLayer::removeAllChildren().
* platform/graphics/texmap/TextureMapperLayer.h:
(TextureMapperLayer):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@138291 268f45cc-cd09-0410-ab3c-d52691b4dbfc
---
Source/WebCore/ChangeLog | 33 +++++++++
.../graphics/texmap/GraphicsLayerTextureMapper.cpp | 25 ++-----
.../graphics/texmap/GraphicsLayerTextureMapper.h | 2 -
.../graphics/texmap/TextureMapperLayer.cpp | 79 +++++++++++++---------
.../platform/graphics/texmap/TextureMapperLayer.h | 6 +-
5 files changed, 91 insertions(+), 54 deletions(-)
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 75c29ab..e70115f 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1205,6 +1205,39 @@
(GenerateGetOwnPropertySlotBody): Use getStaticValueSlotEntryWithoutCaching to climb up the class
hierarchy.
+2012-12-20 Huang Dongsung <luxtella@company100.net>
+
+ [TexMap] Remove ParentChange in TextureMapperLayer.
+ https://bugs.webkit.org/show_bug.cgi?id=105494
+
+ Reviewed by Noam Rosenthal.
+
+ ParentChange is useless, because ChildrenChange is enough. In addition,
+ GraphicsLayer uses setParent() method internally. This patch copies
+ GraphicsLayer::setChildren() into TextureMapperLayer::setChildren().
+
+ No new tests. Covered by existing tests.
+
+ * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
+ (WebCore):
+ (WebCore::GraphicsLayerTextureMapper::setChildren):
+ Match the similar style of replaceChild().
+ * platform/graphics/texmap/GraphicsLayerTextureMapper.h:
+ (GraphicsLayerTextureMapper):
+ * platform/graphics/texmap/TextureMapperLayer.cpp:
+ (WebCore::TextureMapperLayer::flushCompositingStateForThisLayerOnly):
+ (WebCore::TextureMapperLayer::setChildren):
+ Copied from GraphicsLayer::setChildren().
+ (WebCore):
+ (WebCore::TextureMapperLayer::addChild):
+ Copied from GraphicsLayer::addChild().
+ (WebCore::TextureMapperLayer::removeFromParent):
+ Copied from GraphicsLayer::removeFromParent().
+ (WebCore::TextureMapperLayer::removeAllChildren):
+ Copied from GraphicsLayer::removeAllChildren().
+ * platform/graphics/texmap/TextureMapperLayer.h:
+ (TextureMapperLayer):
+
2012-12-13 Filip Pizlo <fpizlo@apple.com>
Named lookups on HTML documents produce inconsistent results in JavaScriptCore bindings
diff --git a/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp b/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp
index 5ba1090..364ddd2 100644
--- a/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp
+++ b/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp
@@ -123,18 +123,13 @@ void GraphicsLayerTextureMapper::setNeedsDisplayInRect(const FloatRect& rect)
/* \reimp (GraphicsLayer.h)
*/
-void GraphicsLayerTextureMapper::setParent(GraphicsLayer* layer)
-{
- notifyChange(TextureMapperLayer::ParentChange);
- GraphicsLayer::setParent(layer);
-}
-
-/* \reimp (GraphicsLayer.h)
-*/
bool GraphicsLayerTextureMapper::setChildren(const Vector<GraphicsLayer*>& children)
{
- notifyChange(TextureMapperLayer::ChildrenChange);
- return GraphicsLayer::setChildren(children);
+ if (GraphicsLayer::setChildren(children)) {
+ notifyChange(TextureMapperLayer::ChildrenChange);
+ return true;
+ }
+ return false;
}
/* \reimp (GraphicsLayer.h)
@@ -182,16 +177,6 @@ bool GraphicsLayerTextureMapper::replaceChild(GraphicsLayer* oldChild, GraphicsL
/* \reimp (GraphicsLayer.h)
*/
-void GraphicsLayerTextureMapper::removeFromParent()
-{
- if (!parent())
- return;
- notifyChange(TextureMapperLayer::ParentChange);
- GraphicsLayer::removeFromParent();
-}
-
-/* \reimp (GraphicsLayer.h)
-*/
void GraphicsLayerTextureMapper::setMaskLayer(GraphicsLayer* value)
{
if (value == maskLayer())
diff --git a/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h b/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h
index 00b0fe7..5a11503 100644
--- a/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h
+++ b/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h
@@ -42,14 +42,12 @@ public:
virtual void setNeedsDisplay();
virtual void setContentsNeedsDisplay();
virtual void setNeedsDisplayInRect(const FloatRect&);
- virtual void setParent(GraphicsLayer* layer);
virtual bool setChildren(const Vector<GraphicsLayer*>&);
virtual void addChild(GraphicsLayer*);
virtual void addChildAtIndex(GraphicsLayer*, int index);
virtual void addChildAbove(GraphicsLayer* layer, GraphicsLayer* sibling);
virtual void addChildBelow(GraphicsLayer* layer, GraphicsLayer* sibling);
virtual bool replaceChild(GraphicsLayer* oldChild, GraphicsLayer* newChild);
- virtual void removeFromParent();
virtual void setMaskLayer(GraphicsLayer* layer);
virtual void setPosition(const FloatPoint& p);
virtual void setAnchorPoint(const FloatPoint3D& p);
diff --git a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
index 4024333..8463622 100644
--- a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
+++ b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
@@ -366,37 +366,8 @@ void TextureMapperLayer::flushCompositingStateSelf(GraphicsLayerTextureMapper* g
graphicsLayer->updateDebugIndicators();
- if (changeMask & ParentChange) {
- TextureMapperLayer* newParent = toTextureMapperLayer(graphicsLayer->parent());
- if (newParent != m_parent) {
- // Remove layer from current from child list first.
- if (m_parent) {
- size_t index = m_parent->m_children.find(this);
- m_parent->m_children.remove(index);
- m_parent = 0;
- }
- // Set new layer parent and add layer to the parents child list.
- if (newParent) {
- m_parent = newParent;
- m_parent->m_children.append(this);
- }
- }
- }
-
- if (changeMask & ChildrenChange) {
- // Clear children parent pointer to avoid unsync and crash on layer delete.
- for (size_t i = 0; i < m_children.size(); i++)
- m_children[i]->m_parent = 0;
-
- m_children.clear();
- for (size_t i = 0; i < graphicsLayer->children().size(); ++i) {
- TextureMapperLayer* child = toTextureMapperLayer(graphicsLayer->children()[i]);
- if (!child)
- continue;
- m_children.append(child);
- child->m_parent = this;
- }
- }
+ if (changeMask & ChildrenChange)
+ setChildren(graphicsLayer->children());
m_size = graphicsLayer->size();
@@ -446,6 +417,52 @@ void TextureMapperLayer::flushCompositingStateSelf(GraphicsLayerTextureMapper* g
m_transform.setChildrenTransform(m_state.childrenTransform);
}
+void TextureMapperLayer::setChildren(const Vector<GraphicsLayer*>& newChildren)
+{
+ removeAllChildren();
+ for (size_t i = 0; i < newChildren.size(); ++i) {
+ TextureMapperLayer* child = toTextureMapperLayer(newChildren[i]);
+ ASSERT(child);
+ addChild(child);
+ }
+}
+
+void TextureMapperLayer::addChild(TextureMapperLayer* childLayer)
+{
+ ASSERT(childLayer != this);
+
+ if (childLayer->m_parent)
+ childLayer->removeFromParent();
+
+ childLayer->m_parent = this;
+ m_children.append(childLayer);
+}
+
+void TextureMapperLayer::removeFromParent()
+{
+ if (m_parent) {
+ unsigned i;
+ for (i = 0; i < m_parent->m_children.size(); i++) {
+ if (this == m_parent->m_children[i]) {
+ m_parent->m_children.remove(i);
+ break;
+ }
+ }
+
+ m_parent = 0;
+ }
+}
+
+void TextureMapperLayer::removeAllChildren()
+{
+ while (m_children.size()) {
+ TextureMapperLayer* curLayer = m_children[0];
+ ASSERT(curLayer->m_parent);
+ curLayer->removeFromParent();
+ }
+}
+
+
bool TextureMapperLayer::descendantsOrSelfHaveRunningAnimations() const
{
if (m_animations.hasRunningAnimations())
diff --git a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h
index 27a77f6..e4a422f 100644
--- a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h
+++ b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h
@@ -57,7 +57,6 @@ public:
enum ChangeMask {
NoChanges = 0,
- ParentChange = (1L << 0),
ChildrenChange = (1L << 1),
MaskLayerChange = (1L << 2),
PositionChange = (1L << 3),
@@ -145,6 +144,11 @@ private:
FloatPoint adjustedPosition() const { return m_state.pos + m_scrollPositionDelta; }
bool isAncestorFixedToViewport() const;
+ void setChildren(const Vector<GraphicsLayer*>&);
+ void addChild(TextureMapperLayer*);
+ void removeFromParent();
+ void removeAllChildren();
+
void paintRecursive(const TextureMapperPaintOptions&);
void paintSelf(const TextureMapperPaintOptions&);
void paintSelfAndChildren(const TextureMapperPaintOptions&);
--
1.8.3.1

View File

@ -2,8 +2,8 @@
Name: qtwebkit
Summary: Qt WebKit bindings
Version: 2.3.2
Release: 3%{?dist}
Version: 2.3.3
Release: 1%{?dist}
License: LGPLv2 with exceptions or GPLv3 with exceptions
URL: http://trac.webkit.org/wiki/QtWebKit
@ -43,10 +43,14 @@ Patch10: qtwebkit-ppc.patch
Patch11: qtwebkit-23-LLInt-C-Loop-backend-ppc.patch
## upstream patches
# NonSharedCharacterBreakIterator leads to CRASH() in configurations that do not have COMPARE_AND_SWAP enabled
# http://bugs.webkit.org/show_bug.cgi?id=101337
# https://bugzilla.redhat.com/show_bug.cgi?id=1006539
Patch100: qtwebkit-webkit101337.patch
Patch102: 0002-Texmap-GTK-The-poster-circle-doesn-t-appear.patch
Patch103: 0003-Qt-Tiled-backing-store-not-clipped-to-frame-or-visib.patch
Patch104: 0004-Qt-Images-scaled-poorly-on-composited-canvas.patch
Patch105: 0005-Port-of-r118587-to-TextBreakIteratorQt.cpp.patch
patch106: 0006-JSC-ARM-traditional-failing-on-Octane-NavierStokes-t.patch
Patch107: 0007-Correct-range-used-for-Emoji-checks.patch
Patch108: 0008-Qt-RepaintRequested-signal-sometimes-not-emitted.patch
Patch109: 0009-TexMap-Remove-ParentChange-in-TextureMapperLayer.patch
BuildRequires: bison
BuildRequires: chrpath
@ -105,7 +109,15 @@ Provides: qt4-webkit-devel%{?_isa} = 2:%{version}-%{release}
%patch10 -p1 -b .system-malloc
%patch11 -p1 -b .Double2Ints
%endif
%patch100 -p1 -b .webkit101337
%patch102 -p1 -b .0002
%patch103 -p1 -b .0003
%patch104 -p1 -b .0004
%patch105 -p1 -b .0005
%patch106 -p1 -b .0006
%patch107 -p1 -b .0007
%patch108 -p1 -b .0008
%patch109 -p1 -b .0009
%build
@ -159,6 +171,10 @@ popd
%changelog
* Thu Oct 03 2013 Rex Dieter <rdieter@fedoraproject.org> 2.3.3-1
- qtwebkit-2.3.3
- include some post 2.3.3 commits/fixes
* Thu Sep 12 2013 Rex Dieter <rdieter@fedoraproject.org> 2.3.2-3
- SIGSEGV - ~NonSharedCharacterBreakIterator (#1006539, webkit#101337)

View File

@ -1 +1 @@
2ed69ed5d371eade388c07bec5ffb743 qtwebkit-2.3.2.tar.xz
6f9b0af3c401a43fa29cd3a9c393729a qtwebkit-2.3.3.tar.xz