diff options
| -rw-r--r-- | Source/WebCore/ChangeLog | 57 | ||||
| -rw-r--r-- | Source/WebCore/WebCore.pri | 4 | ||||
| -rw-r--r-- | Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp | 2 | ||||
| -rw-r--r-- | Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp | 35 | ||||
| -rw-r--r-- | Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h | 17 | ||||
| -rw-r--r-- | Tools/ChangeLog | 26 | ||||
| -rw-r--r-- | Tools/qmake/mkspecs/features/configure.prf | 21 | ||||
| -rw-r--r-- | Tools/qmake/mkspecs/features/default_post.prf | 2 | ||||
| -rw-r--r-- | Tools/qmake/mkspecs/features/functions.prf | 19 |
9 files changed, 168 insertions, 15 deletions
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index b30aba2ab..8ee46f4b5 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,15 @@ +2013-02-19 Andras Becsi <andras.becsi@digia.com> + + [Qt] Fix compilation if Qt was configured with -no-rtti + https://bugs.webkit.org/show_bug.cgi?id=110234 + + Reviewed by Noam Rosenthal. + + Availability of dynamic_cast should be checked. + + * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp: + (WebCore::GraphicsLayerTextureMapper::updateBackingStoreIfNeeded): + 2013-01-31 Allan Sandfeld Jensen <allan.jensen@digia.com> [Qt] Box shadows on a transparency layer is very slow @@ -35,6 +47,51 @@ * dom/Element.h: (Element): +2013-01-25 Alexander Paschenko <alexander.pashenko@lge.com> + + [TexMap] Flickering after transitions on Apple HTML5 demo + https://bugs.webkit.org/show_bug.cgi?id=102501 + + Reviewed by Noam Rosenthal. + + The problem is caused by inconsistent state of TextureMapperLayer's transformation matrix + and opacity data during and after the end of animation. + This patch solves the problem by introducing three additional private flags + to TextureMapperLayer: + m_shouldUpdateCurrentTransformFromGraphicsLayer, + m_shouldUpdateCurrentOpacityFromGraphicsLayer, and + m_shouldUpdateCurrentFiltersFromGraphicsLayer. + The latter has been introduced in order to avoid similar future problems + with m_currentFilters. + On these flags' basis, TextureMapperLayer is able to decide whether to update + its inner state or not. + These flags themselves are set based on GraphicsLayerTextureMapper's changeMask + which indicates what details of the state have been changed since the last sync. + + No new tests - this doesn't expose any testable surface. + Eyes-only check has been made to ensure that the problem is gone now. + + * platform/graphics/texmap/TextureMapperLayer.cpp: + (WebCore::TextureMapperLayer::setAnimatedTransform): + sets m_shouldUpdateCurrentTransformFromGraphicsLayer to false and + updates m_currentTransform based on the updated state from GraphicsLayerAnimation. + (WebCore): + (WebCore::TextureMapperLayer::setAnimatedOpacity): + sets m_shouldUpdateCurrentOpacityFromGraphicsLayer to false and + updates m_currentOpacity based on the updated state from GraphicsLayerAnimation. + (WebCore::TextureMapperLayer::setAnimatedFilters): + sets m_shouldUpdateCurrentFiltersFromGraphicsLayer to false and + updates m_currentFilters based on the updated state from GraphicsLayerAnimation. + (WebCore::TextureMapperLayer::flushCompositingStateForThisLayerOnly): + sets m_shouldUpdateCurrent* flags based on GLTM's changeMask. Also illegal modification + of m_currentTransform that caused flickering has been removed from this method. + (WebCore::TextureMapperLayer::syncAnimations): updates m_currentTransform and/or + m_currentOpacity and/or m_currentFilters if corresponding flags allow to do so. + * platform/graphics/texmap/TextureMapperLayer.h: + (WebCore::TextureMapperLayer::TextureMapperLayer): aforementioned flags + get initialized in ctor. + (TextureMapperLayer): aforementioned flags are declared in the class. + 2013-01-04 John Mellor <johnme@chromium.org> Early out from FontCache::releaseFontData if cached font data not found. diff --git a/Source/WebCore/WebCore.pri b/Source/WebCore/WebCore.pri index 2ac0dd7ad..6c9ce5c9e 100644 --- a/Source/WebCore/WebCore.pri +++ b/Source/WebCore/WebCore.pri @@ -302,10 +302,6 @@ unix:!mac:*-g++*:QMAKE_CXXFLAGS += -fdata-sections unix:!mac:*-g++*:QMAKE_LFLAGS += -Wl,--gc-sections linux*-g++*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF -unix|win32-g++* { - QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtNetwork QtWidgets -} - contains(DEFINES, ENABLE_OPENCL=1) { LIBS += -lOpenCL diff --git a/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp b/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp index 88b3e97bd..c13f892b0 100644 --- a/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp +++ b/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp @@ -452,7 +452,9 @@ void GraphicsLayerTextureMapper::prepareBackingStore() if (!m_backingStore) m_backingStore = TextureMapperTiledBackingStore::create(); +#ifndef QT_NO_DYNAMIC_CAST ASSERT(dynamic_cast<TextureMapperTiledBackingStore*>(m_backingStore.get())); +#endif TextureMapperTiledBackingStore* backingStore = static_cast<TextureMapperTiledBackingStore*>(m_backingStore.get()); if (isShowingRepaintCounter()) diff --git a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp index d2a10aa66..9d8a21010 100644 --- a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp +++ b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp @@ -264,7 +264,25 @@ void TextureMapperLayer::paintSelfAndChildrenWithReplica(const TextureMapperPain paintSelfAndChildren(options); } +void TextureMapperLayer::setAnimatedTransform(const TransformationMatrix& matrix) +{ + m_shouldUpdateCurrentTransformFromGraphicsLayer = false; + setTransform(matrix); +} + +void TextureMapperLayer::setAnimatedOpacity(float opacity) +{ + m_shouldUpdateCurrentOpacityFromGraphicsLayer = false; + setOpacity(opacity); +} + #if ENABLE(CSS_FILTERS) +void TextureMapperLayer::setAnimatedFilters(const FilterOperations& filters) +{ + m_shouldUpdateCurrentFiltersFromGraphicsLayer = false; + setFilters(filters); +} + static bool shouldKeepContentTexture(const FilterOperations& filters) { for (size_t i = 0; i < filters.size(); ++i) { @@ -412,6 +430,17 @@ void TextureMapperLayer::flushCompositingStateSelf(GraphicsLayerTextureMapper* g if (changeMask & AnimationChange) m_animations = graphicsLayer->m_animations; + + if (changeMask & TransformChange) + m_shouldUpdateCurrentTransformFromGraphicsLayer = true; + + if (changeMask & OpacityChange) + m_shouldUpdateCurrentOpacityFromGraphicsLayer = true; + +#if ENABLE(CSS_FILTERS) + if (changeMask & FilterChange) + m_shouldUpdateCurrentFiltersFromGraphicsLayer = true; +#endif m_state.maskLayer = toTextureMapperLayer(graphicsLayer->maskLayer()); m_state.replicaLayer = toTextureMapperLayer(graphicsLayer->replicaLayer()); @@ -466,12 +495,12 @@ void TextureMapperLayer::applyAnimationsRecursively() void TextureMapperLayer::syncAnimations() { m_animations.apply(this); - if (!m_animations.hasActiveAnimationsOfType(AnimatedPropertyWebkitTransform)) + if (!m_animations.hasActiveAnimationsOfType(AnimatedPropertyWebkitTransform) && m_shouldUpdateCurrentTransformFromGraphicsLayer) setTransform(m_state.transform); - if (!m_animations.hasActiveAnimationsOfType(AnimatedPropertyOpacity)) + if (!m_animations.hasActiveAnimationsOfType(AnimatedPropertyOpacity) && m_shouldUpdateCurrentOpacityFromGraphicsLayer) setOpacity(m_state.opacity); #if ENABLE(CSS_FILTERS) - if (!m_animations.hasActiveAnimationsOfType(AnimatedPropertyWebkitFilter)) + if (!m_animations.hasActiveAnimationsOfType(AnimatedPropertyWebkitFilter) && m_shouldUpdateCurrentFiltersFromGraphicsLayer) setFilters(m_state.filters); #endif } diff --git a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h index 27a77f6fe..08c273740 100644 --- a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h +++ b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h @@ -98,6 +98,11 @@ public: , m_contentsLayer(0) , m_opacity(1) , m_centerZ(0) + , m_shouldUpdateCurrentTransformFromGraphicsLayer(true) + , m_shouldUpdateCurrentOpacityFromGraphicsLayer(true) +#if ENABLE(CSS_FILTERS) + , m_shouldUpdateCurrentFiltersFromGraphicsLayer(true) +#endif , m_textureMapper(0) { } @@ -151,10 +156,10 @@ private: void paintSelfAndChildrenWithReplica(const TextureMapperPaintOptions&); // GraphicsLayerAnimation::Client - void setAnimatedTransform(const TransformationMatrix& matrix) { setTransform(matrix); } - void setAnimatedOpacity(float opacity) { setOpacity(opacity); } + virtual void setAnimatedTransform(const TransformationMatrix& matrix) OVERRIDE; + virtual void setAnimatedOpacity(float opacity) OVERRIDE; #if ENABLE(CSS_FILTERS) - virtual void setAnimatedFilters(const FilterOperations& filters) { setFilters(filters); } + virtual void setAnimatedFilters(const FilterOperations& filters) OVERRIDE; #endif void syncAnimations(); @@ -188,6 +193,12 @@ private: float m_centerZ; String m_name; + bool m_shouldUpdateCurrentTransformFromGraphicsLayer; + bool m_shouldUpdateCurrentOpacityFromGraphicsLayer; +#if ENABLE(CSS_FILTERS) + bool m_shouldUpdateCurrentFiltersFromGraphicsLayer; +#endif + struct State { FloatPoint pos; FloatPoint3D anchorPoint; diff --git a/Tools/ChangeLog b/Tools/ChangeLog index e218e8e98..ee62ee985 100644 --- a/Tools/ChangeLog +++ b/Tools/ChangeLog @@ -1,3 +1,29 @@ +2013-02-19 Simon Hausmann <simon.hausmann@digia.com> + + [Qt] Skip the build with a warning if certain tools cannot be found in the PATH + https://bugs.webkit.org/show_bug.cgi?id=110215 + + Reviewed by Tor Arne Vestbø. + + Check that gperf, python, ruby, perl, bison and flex are in the PATH before + continuing the build. Otherwise skip with an error message explaining which + programs are missing from the build. + + * qmake/mkspecs/features/configure.prf: + * qmake/mkspecs/features/functions.prf: + +2013-02-18 Simon Hausmann <simon.hausmann@digia.com> + + [Qt] Disable the build if certain configure checks fail + https://bugs.webkit.org/show_bug.cgi?id=110094 + + Reviewed by Tor Arne Vestbø. + + Allow for the build to be skipped (clear out SUBDIRS) if certain + configure conditions aren't met. + + * qmake/mkspecs/features/configure.prf: + 2013-01-14 Jocelyn Turcotte <jocelyn.turcotte@digia.com> [Qt] The Qt's configuration isn't honoured regarding the use of the system libpng and libjpeg diff --git a/Tools/qmake/mkspecs/features/configure.prf b/Tools/qmake/mkspecs/features/configure.prf index 81b6f0ea1..27adbaaff 100644 --- a/Tools/qmake/mkspecs/features/configure.prf +++ b/Tools/qmake/mkspecs/features/configure.prf @@ -109,8 +109,17 @@ defineTest(finalizeConfigure) { error(Done computing defaults) } - # Sanity check that would prevent us from building the whole project altogether. - !mac:!contains(QT_CONFIG,icu): error("To build QtWebKit with Qt 5 you need to build Qt 5 with libICU support. Check for ICU support being mentioned in qtbase/config.summary.") + # Sanity checks that would prevent us from building the whole project altogether. + !mac:!contains(QT_CONFIG,icu) { + addReasonForSkippingBuild("ICU is required. To build QtWebKit with Qt 5 you need to build Qt 5 with libICU support. Check for ICU support being mentioned in qtbase/config.summary.") + } + production_build:blackberry { + addReasonForSkippingBuild("Build not supported on BB10 yet.") + } + requiredPrograms = gperf python perl bison ruby flex + for(program, requiredPrograms): \ + !programExistsInPath($$program): \ + addReasonForSkippingBuild("Missing $$program from PATH") # Detect changes to the configuration. Changes need a clean build. webkit_configured { @@ -226,7 +235,13 @@ defineTest(finalizeConfigure) { } } - log("$${EOL}WebKit is now configured for building. Just run 'make'.$${EOL}$${EOL}") + !isEmpty(skipBuildReason) { + log("$${EOL}The WebKit build was disabled for the following reasons: $$skipBuildReason $${EOL}$${EOL}") + SUBDIRS= + export(SUBDIRS) + } else { + log("$${EOL}WebKit is now configured for building. Just run 'make'.$${EOL}$${EOL}") + } configuration_changed { log(WARNING: The configuration was changed since the last build:$${EOL}$${EOL}) diff --git a/Tools/qmake/mkspecs/features/default_post.prf b/Tools/qmake/mkspecs/features/default_post.prf index 7c92a7d3c..603d9782c 100644 --- a/Tools/qmake/mkspecs/features/default_post.prf +++ b/Tools/qmake/mkspecs/features/default_post.prf @@ -36,8 +36,6 @@ CONFIG(release, debug|release): DEFINES *= NDEBUG DEFINES += $$configDefines() -DEPENDPATH += $$OUT_PWD - INCLUDEPATH += \ $${ROOT_WEBKIT_DIR}/Source \ $${ROOT_BUILD_DIR}/Source/include \ diff --git a/Tools/qmake/mkspecs/features/functions.prf b/Tools/qmake/mkspecs/features/functions.prf index 4477f8321..f9d2defe2 100644 --- a/Tools/qmake/mkspecs/features/functions.prf +++ b/Tools/qmake/mkspecs/features/functions.prf @@ -199,6 +199,25 @@ defineTest(haveQtModule) { return(false) } +defineTest(programExistsInPath) { + win_cmd_shell: program = $${1}.exe + else: program = $$1 + + PATH = "$$(PATH)" + paths=$$split(PATH, $$QMAKE_DIRLIST_SEP) + + GNUTOOLS_DIR=$$[QT_HOST_DATA]/../gnuwin32/bin + exists($$GNUTOOLS_DIR): paths += $$GNUTOOLS_DIR + + for(p, paths): exists($$p/$$program):return(true) + return(false) +} + +defineTest(addReasonForSkippingBuild) { + skipBuildReason = "$$skipBuildReason$${EOL} * $$1" + export(skipBuildReason) +} + defineTest(prependEach) { unset(variable) unset(prefix) |
