Changeset 170862 in webkit
- Timestamp:
- Jul 7, 2014, 4:44:49 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 5 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/platform/graphics/ca/mac/PlatformCALayerMac.mm (modified) (1 diff)
-
WebKit2/ChangeLog (modified) (1 diff)
-
WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm (modified) (1 diff)
-
WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r170849 r170862 1 2014-07-07 Simon Fraser <simon.fraser@apple.com> 2 3 [UI-side compositing] Crash when starting a filter transition on a reflected layer 4 https://bugs.webkit.org/show_bug.cgi?id=134694 5 6 Reviewed by Tim Horton. 7 8 Don't call the owner if we failed to find the animation key (which actually 9 isn't used by PlatformCALayerMac anyway). 10 11 * platform/graphics/ca/mac/PlatformCALayerMac.mm: 12 (-[WebAnimationDelegate animationDidStart:]): 13 1 14 2014-07-07 Alex Christensen <achristensen@webkit.org> 2 15 -
trunk/Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.mm
r170071 r170862 133 133 } 134 134 135 m_owner->animationStarted(animationKey, startTime); 135 if (!animationKey.isEmpty()) 136 m_owner->animationStarted(animationKey, startTime); 136 137 } 137 138 } -
trunk/Source/WebKit2/ChangeLog
r170859 r170862 1 2014-07-07 Simon Fraser <simon.fraser@apple.com> 2 3 [UI-side compositing] Crash when starting a filter transition on a reflected layer 4 https://bugs.webkit.org/show_bug.cgi?id=134694 5 6 Reviewed by Tim Horton. 7 8 When cloned layers had animations, we would fire two animationDidStart callbacks, 9 but the second would pass an empty animationKey string to the web process, resulting 10 in a crash. 11 12 Fix by not blindly copying all layer properties when cloning PlatformCALayerRemotes, 13 since the clone would include addedAnimations, and then get the same animations 14 added on top by the caller. 15 16 Also protect against an empty animation key in the animationDidStart callback. 17 18 * UIProcess/mac/RemoteLayerTreeHost.mm: 19 (WebKit::RemoteLayerTreeHost::animationDidStart): 20 * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp: 21 (WebKit::PlatformCALayerRemote::PlatformCALayerRemote): 22 (WebKit::PlatformCALayerRemote::clone): Don't copy all the properties; copy 23 them manually as PlatformCALayerMac does. Only copy the big things if they don't 24 have their default values. 25 (WebKit::PlatformCALayerRemote::copyFiltersFrom): Need an implementation of this 26 for clone() to call. 27 1 28 2014-07-07 Tim Horton <timothy_horton@apple.com> 2 29 -
trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm
r170071 r170862 149 149 } 150 150 151 m_drawingArea.acceleratedAnimationDidStart(layerID, animationKey, startTime); 151 if (!animationKey.isEmpty()) 152 m_drawingArea.acceleratedAnimationDidStart(layerID, animationKey, startTime); 152 153 } 153 154 -
trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp
r170656 r170862 91 91 PlatformCALayerRemote::PlatformCALayerRemote(const PlatformCALayerRemote& other, PlatformCALayerClient* owner, RemoteLayerTreeContext& context) 92 92 : PlatformCALayer(other.layerType(), owner) 93 , m_properties(other.m_properties)94 93 , m_superlayer(nullptr) 95 94 , m_maskLayer(nullptr) … … 103 102 RefPtr<PlatformCALayerRemote> clone = PlatformCALayerRemote::create(*this, client, *m_context); 104 103 105 clone->m_properties.notePropertiesChanged(static_cast<RemoteLayerTreeTransaction::LayerChange>(m_properties.everChangedProperties & ~RemoteLayerTreeTransaction::BackingStoreChanged)); 104 clone->setPosition(position()); 105 clone->setBounds(bounds()); 106 clone->setAnchorPoint(anchorPoint()); 107 108 if (m_properties.transform) 109 clone->setTransform(*m_properties.transform); 110 111 if (m_properties.sublayerTransform) 112 clone->setSublayerTransform(*m_properties.sublayerTransform); 113 114 clone->setContents(contents()); 115 clone->setMasksToBounds(masksToBounds()); 116 clone->setDoubleSided(isDoubleSided()); 117 clone->setOpaque(isOpaque()); 118 clone->setBackgroundColor(backgroundColor()); 119 clone->setContentsScale(contentsScale()); 120 #if ENABLE(CSS_FILTERS) 121 if (m_properties.filters) 122 clone->copyFiltersFrom(this); 123 #endif 124 clone->updateCustomAppearance(customAppearance()); 106 125 107 126 clone->setClonedLayer(this); … … 578 597 void PlatformCALayerRemote::copyFiltersFrom(const PlatformCALayer* sourceLayer) 579 598 { 580 ASSERT_NOT_REACHED(); 599 if (const FilterOperations* filters = toPlatformCALayerRemote(sourceLayer)->m_properties.filters.get()) 600 setFilters(*filters); 601 else if (m_properties.filters) 602 m_properties.filters = nullptr; 603 604 m_properties.notePropertiesChanged(RemoteLayerTreeTransaction::FiltersChanged); 581 605 } 582 606
Note:
See TracChangeset
for help on using the changeset viewer.