summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/WebCore/ChangeLog57
-rw-r--r--Source/WebCore/WebCore.pri4
-rw-r--r--Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp2
-rw-r--r--Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp35
-rw-r--r--Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h17
-rw-r--r--Tools/ChangeLog26
-rw-r--r--Tools/qmake/mkspecs/features/configure.prf21
-rw-r--r--Tools/qmake/mkspecs/features/default_post.prf2
-rw-r--r--Tools/qmake/mkspecs/features/functions.prf19
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)