From 30bd45bb64e92d792c795a0c3142ac3ca516168a Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Thu, 3 Oct 2013 18:08:32 -0500 Subject: [PATCH] 2.3.3-1 - qtwebkit-2.3.3 - include some post 2.3.3 commits/fixes --- .gitignore | 3 +- ...GTK-The-poster-circle-doesn-t-appear.patch | 81 +++++ ...-store-not-clipped-to-frame-or-visib.patch | 80 +++++ ...s-scaled-poorly-on-composited-canvas.patch | 66 +++++ ...f-r118587-to-TextBreakIteratorQt.cpp.patch | 24 +- ...nal-failing-on-Octane-NavierStokes-t.patch | 60 ++++ ...-Correct-range-used-for-Emoji-checks.patch | 69 +++++ ...quested-signal-sometimes-not-emitted.patch | 42 +++ ...e-ParentChange-in-TextureMapperLayer.patch | 276 ++++++++++++++++++ qtwebkit.spec | 30 +- sources | 2 +- 11 files changed, 717 insertions(+), 16 deletions(-) create mode 100644 0002-Texmap-GTK-The-poster-circle-doesn-t-appear.patch create mode 100644 0003-Qt-Tiled-backing-store-not-clipped-to-frame-or-visib.patch create mode 100644 0004-Qt-Images-scaled-poorly-on-composited-canvas.patch rename qtwebkit-webkit101337.patch => 0005-Port-of-r118587-to-TextBreakIteratorQt.cpp.patch (73%) create mode 100644 0006-JSC-ARM-traditional-failing-on-Octane-NavierStokes-t.patch create mode 100644 0007-Correct-range-used-for-Emoji-checks.patch create mode 100644 0008-Qt-RepaintRequested-signal-sometimes-not-emitted.patch create mode 100644 0009-TexMap-Remove-ParentChange-in-TextureMapperLayer.patch diff --git a/.gitignore b/.gitignore index ced2cc8..aed68bd 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/0002-Texmap-GTK-The-poster-circle-doesn-t-appear.patch b/0002-Texmap-GTK-The-poster-circle-doesn-t-appear.patch new file mode 100644 index 0000000..754e4d2 --- /dev/null +++ b/0002-Texmap-GTK-The-poster-circle-doesn-t-appear.patch @@ -0,0 +1,81 @@ +From 14dca2f9fc4fd1a370cdf7d0d690472e1f56da8b Mon Sep 17 00:00:00 2001 +From: ChangSeok Oh +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 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 ++ ++ [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 + + [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 + diff --git a/0003-Qt-Tiled-backing-store-not-clipped-to-frame-or-visib.patch b/0003-Qt-Tiled-backing-store-not-clipped-to-frame-or-visib.patch new file mode 100644 index 0000000..d567213 --- /dev/null +++ b/0003-Qt-Tiled-backing-store-not-clipped-to-frame-or-visib.patch @@ -0,0 +1,80 @@ +From 974c1dfeb826cc6d6e96d316d63bf13c645b1ac8 Mon Sep 17 00:00:00 2001 +From: Allan Sandfeld Jensen +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 ++ ++ [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 + + [Qt] Handle Return key without key text +-- +1.8.3.1 + diff --git a/0004-Qt-Images-scaled-poorly-on-composited-canvas.patch b/0004-Qt-Images-scaled-poorly-on-composited-canvas.patch new file mode 100644 index 0000000..6174c1c --- /dev/null +++ b/0004-Qt-Images-scaled-poorly-on-composited-canvas.patch @@ -0,0 +1,66 @@ +From b2a2856f9102515e9a9a048655f08d9c8152b179 Mon Sep 17 00:00:00 2001 +From: Allan Sandfeld Jensen +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 + ++ [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 ++ + [Qt] Tiled-backing store not clipped to frame or visible rect + https://bugs.webkit.org/show_bug.cgi?id=120606 + +-- +1.8.3.1 + diff --git a/qtwebkit-webkit101337.patch b/0005-Port-of-r118587-to-TextBreakIteratorQt.cpp.patch similarity index 73% rename from qtwebkit-webkit101337.patch rename to 0005-Port-of-r118587-to-TextBreakIteratorQt.cpp.patch index 4490c78..072240f 100644 --- a/qtwebkit-webkit101337.patch +++ b/0005-Port-of-r118587-to-TextBreakIteratorQt.cpp.patch @@ -1,12 +1,21 @@ +From 9fe66e8b769e6fe1c66b8d00b6c8e6403d9d6303 Mon Sep 17 00:00:00 2001 +From: Konstantin Tokarev +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 #include #include -+#include ++#include // #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(&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(&nonSharedCharacterBreakIterator), 0, m_iterator)) -+ if (!compareAndSwapNonSharedCharacterBreakIterator(0, m_iterator)) ++ if (!compareAndSwapNonSharedCharacterBreakIterator(m_iterator, 0)) delete m_iterator; } +-- +1.8.3.1 + diff --git a/0006-JSC-ARM-traditional-failing-on-Octane-NavierStokes-t.patch b/0006-JSC-ARM-traditional-failing-on-Octane-NavierStokes-t.patch new file mode 100644 index 0000000..83e8674 --- /dev/null +++ b/0006-JSC-ARM-traditional-failing-on-Octane-NavierStokes-t.patch @@ -0,0 +1,60 @@ +From 0609a6521a7750cc9b7ba9882034b47c754ca538 Mon Sep 17 00:00:00 2001 +From: Gabor Rapcsanyi +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 ++ ++ 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 + + 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 + diff --git a/0007-Correct-range-used-for-Emoji-checks.patch b/0007-Correct-range-used-for-Emoji-checks.patch new file mode 100644 index 0000000..bc1646e --- /dev/null +++ b/0007-Correct-range-used-for-Emoji-checks.patch @@ -0,0 +1,69 @@ +From 41c7cbdead4d77254bf59397875dcc5cbb1e0a9d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20Br=C3=BCning?= +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 ++ ++ 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 + + [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 + diff --git a/0008-Qt-RepaintRequested-signal-sometimes-not-emitted.patch b/0008-Qt-RepaintRequested-signal-sometimes-not-emitted.patch new file mode 100644 index 0000000..32832d5 --- /dev/null +++ b/0008-Qt-RepaintRequested-signal-sometimes-not-emitted.patch @@ -0,0 +1,42 @@ +From c2e59a0a266e61e6688311df9aadadbb0eaf997b Mon Sep 17 00:00:00 2001 +From: Allan Sandfeld Jensen +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*) + 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 + diff --git a/0009-TexMap-Remove-ParentChange-in-TextureMapperLayer.patch b/0009-TexMap-Remove-ParentChange-in-TextureMapperLayer.patch new file mode 100644 index 0000000..d3efdbd --- /dev/null +++ b/0009-TexMap-Remove-ParentChange-in-TextureMapperLayer.patch @@ -0,0 +1,276 @@ +From fa54af90c55c5264e2e2510a24311a77c9e569b0 Mon Sep 17 00:00:00 2001 +From: Allan Sandfeld Jensen +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 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 ++ ++ [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 + + 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& 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&); + 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& 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&); ++ void addChild(TextureMapperLayer*); ++ void removeFromParent(); ++ void removeAllChildren(); ++ + void paintRecursive(const TextureMapperPaintOptions&); + void paintSelf(const TextureMapperPaintOptions&); + void paintSelfAndChildren(const TextureMapperPaintOptions&); +-- +1.8.3.1 + diff --git a/qtwebkit.spec b/qtwebkit.spec index 7791bf3..655a421 100644 --- a/qtwebkit.spec +++ b/qtwebkit.spec @@ -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 2.3.3-1 +- qtwebkit-2.3.3 +- include some post 2.3.3 commits/fixes + * Thu Sep 12 2013 Rex Dieter 2.3.2-3 - SIGSEGV - ~NonSharedCharacterBreakIterator (#1006539, webkit#101337) diff --git a/sources b/sources index d5dd4d8..937cdec 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -2ed69ed5d371eade388c07bec5ffb743 qtwebkit-2.3.2.tar.xz +6f9b0af3c401a43fa29cd3a9c393729a qtwebkit-2.3.3.tar.xz