WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-125076-20131202112451.patch (text/plain), 6.67 KB, created by
Thiago de Barros Lacerda
on 2013-12-02 06:24:52 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Thiago de Barros Lacerda
Created:
2013-12-02 06:24:52 PST
Size:
6.67 KB
patch
obsolete
>Subversion Revision: 159931 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 3eefc0b79ffc0ac6c373858ed21c37ca4fd05ccc..a3a6e6f5e7949dd3f7593a5e77c6eeba34b47b17 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,24 @@ >+2013-12-02 Thiago de Barros Lacerda <thiago.lacerda@openbossa.org> >+ >+ Nix Upstream: Adding Nix specific platform code in CoordinatedGraphicsScene and TextureMapperLayer >+ https://bugs.webkit.org/show_bug.cgi?id=125076 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Test will be present in the nix upstream tests patch. >+ >+ * platform/graphics/texmap/TextureMapperLayer.cpp: >+ (WebCore::TextureMapperLayer::getAncestorScrollableLayer): >+ * platform/graphics/texmap/TextureMapperLayer.h: >+ * platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp: >+ (WebCore::CoordinatedGraphicsScene::CoordinatedGraphicsScene): >+ (WebCore::CoordinatedGraphicsScene::commitPendingStateChange): >+ (WebCore::CoordinatedGraphicsScene::commitSceneState): >+ (WebCore::CoordinatedGraphicsScene::syncRemoteContent): >+ * platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.h: >+ (WebCore::CoordinatedGraphicsScene::lockState): >+ (WebCore::CoordinatedGraphicsScene::unlockState): >+ > 2013-12-02 Nick Diego Yamane <nick.yamane@openbossa.org> > > Fix a crash in the webaudio source provider when the audio track is going away. >diff --git a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp >index 7e7babbcd0c91de4b2722638255e64559a79cb73..8976808f4fd3536d2d44a3ed02a994fb57cd5ba8 100644 >--- a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp >+++ b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp >@@ -736,6 +736,18 @@ template<class HitTestCondition> TextureMapperLayer* TextureMapperLayer::hitTest > return condition(this, point) ? this : 0; > } > >+#if PLATFORM(NIX) >+TextureMapperLayer* TextureMapperLayer::getAncestorScrollableLayer() const >+{ >+ for (TextureMapperLayer* parent = m_parent; parent; parent = parent->m_parent) { >+ if (parent->isScrollable()) >+ return parent; >+ } >+ >+ return 0; >+} >+#endif // PLATFORM(NIX) >+ > bool TextureMapperLayer::scrollableLayerHitTestCondition(TextureMapperLayer* layer, const FloatPoint& point) > { > // scrolling layer's m_parent->m_parent, the parent of the scrolling layes, is the one that defines the >diff --git a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h >index 7b62b0a0b7ded140887788376155cc6e508fa22d..83b4c46f52010fb9450ed1ba040bef6c44ffb8b4 100644 >--- a/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h >+++ b/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h >@@ -73,6 +73,9 @@ public: > void didCommitScrollOffset(const IntSize&); > void setIsScrollable(bool isScrollable) { m_isScrollable = isScrollable; } > bool isScrollable() const { return m_isScrollable; } >+#if PLATFORM(NIX) >+ TextureMapperLayer* getAncestorScrollableLayer() const; >+#endif // PLATFORM(NIX) > > TextureMapper* textureMapper() const; > void setTextureMapper(TextureMapper* texmap) { m_textureMapper = texmap; } >diff --git a/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp b/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp >index 8662788cc93469c5ff287e941f66fa01572b1055..60f3cb5956ae5c20b697c9029e75eb93b6194adf 100644 >--- a/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp >+++ b/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp >@@ -60,6 +60,9 @@ CoordinatedGraphicsScene::CoordinatedGraphicsScene(CoordinatedGraphicsSceneClien > , m_rootLayerID(InvalidCoordinatedLayerID) > , m_backgroundColor(Color::white) > , m_setDrawsBackground(false) >+#if PLATFORM(NIX) >+ , m_stateLocked(false) >+#endif // PLATFORM(NIX) > { > ASSERT(isMainThread()); > } >@@ -607,8 +610,27 @@ void CoordinatedGraphicsScene::commitPendingBackingStoreOperations() > m_backingStoresWithPendingBuffers.clear(); > } > >+#if PLATFORM(NIX) >+void CoordinatedGraphicsScene::commitPendingStateChange() >+{ >+ if (m_stateLocked || !m_pendingStateChange) >+ return; >+ >+ OwnPtr<CoordinatedGraphicsState> pendingChange = m_pendingStateChange.release(); >+ commitSceneState(*pendingChange.get()); >+} >+#endif // PLATFORM(NIX) >+ > void CoordinatedGraphicsScene::commitSceneState(const CoordinatedGraphicsState& state) > { >+#if PLATFORM(NIX) >+ if (m_stateLocked) { >+ ASSERT(!m_pendingStateChange); >+ m_pendingStateChange = adoptPtr(new CoordinatedGraphicsState(state)); >+ return; >+ } >+#endif // PLATFORM(NIX) >+ > m_renderedContentsScrollPosition = state.scrollPosition; > > createLayers(state.layersToCreate); >@@ -659,6 +681,9 @@ void CoordinatedGraphicsScene::ensureRootLayer() > void CoordinatedGraphicsScene::syncRemoteContent() > { > // We enqueue messages and execute them during paint, as they require an active GL context. >+#if PLATFORM(NIX) >+ commitPendingStateChange(); >+#endif // PLATFORM(NIX) > ensureRootLayer(); > > Vector<Function<void()> > renderQueue; >diff --git a/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.h b/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.h >index 07cd5634fcc7d9a5117eaab756d9ec8ee69aef80..69c581054221e449f0c2bcd47d5d2a6382e10c9d 100644 >--- a/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.h >+++ b/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.h >@@ -85,6 +85,11 @@ public: > void setBackgroundColor(const Color&); > void setDrawsBackground(bool enable) { m_setDrawsBackground = enable; } > >+#if PLATFORM(NIX) >+ void lockState() { m_stateLocked = true; } >+ void unlockState() { m_stateLocked = false; } >+#endif // PLATFORM(NIX) >+ > private: > void setRootLayerID(CoordinatedLayerID); > void createLayers(const Vector<CoordinatedLayerID>&); >@@ -151,6 +156,9 @@ private: > void createBackingStoreIfNeeded(TextureMapperLayer*); > void removeBackingStoreIfNeeded(TextureMapperLayer*); > void resetBackingStoreSizeToLayerSize(TextureMapperLayer*); >+#if PLATFORM(NIX) >+ void commitPendingStateChange(); >+#endif // PLATFORM(NIX) > > void dispatchCommitScrollOffset(uint32_t layerID, const IntSize& offset); > >@@ -199,6 +207,11 @@ private: > #endif > > TextureMapperFPSCounter m_fpsCounter; >+ >+#if PLATFORM(NIX) >+ bool m_stateLocked; >+ OwnPtr<CoordinatedGraphicsState> m_pendingStateChange; >+#endif // PLATFORM(NIX) > }; > > } // namespace WebCore
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
noam
:
review-
noam
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 125076
: 218168