Merge \"Avoid throwing when 0 size layer requested\" into nyc-dev
am: 807989facd
Change-Id: I09c2114b0ff2aa1badb414da9b3b5cd2bbd63669
This commit is contained in:
@@ -301,7 +301,10 @@ void RenderNode::pushLayerUpdate(TreeInfo& info) {
|
|||||||
LayerType layerType = properties().effectiveLayerType();
|
LayerType layerType = properties().effectiveLayerType();
|
||||||
// If we are not a layer OR we cannot be rendered (eg, view was detached)
|
// If we are not a layer OR we cannot be rendered (eg, view was detached)
|
||||||
// we need to destroy any Layers we may have had previously
|
// we need to destroy any Layers we may have had previously
|
||||||
if (CC_LIKELY(layerType != LayerType::RenderLayer) || CC_UNLIKELY(!isRenderable())) {
|
if (CC_LIKELY(layerType != LayerType::RenderLayer)
|
||||||
|
|| CC_UNLIKELY(!isRenderable())
|
||||||
|
|| CC_UNLIKELY(properties().getWidth() == 0)
|
||||||
|
|| CC_UNLIKELY(properties().getHeight() == 0)) {
|
||||||
if (CC_UNLIKELY(mLayer)) {
|
if (CC_UNLIKELY(mLayer)) {
|
||||||
destroyLayer(mLayer);
|
destroyLayer(mLayer);
|
||||||
mLayer = nullptr;
|
mLayer = nullptr;
|
||||||
|
|||||||
@@ -611,9 +611,7 @@ public:
|
|||||||
bool fitsOnLayer() const {
|
bool fitsOnLayer() const {
|
||||||
const DeviceInfo* deviceInfo = DeviceInfo::get();
|
const DeviceInfo* deviceInfo = DeviceInfo::get();
|
||||||
return mPrimitiveFields.mWidth <= deviceInfo->maxTextureSize()
|
return mPrimitiveFields.mWidth <= deviceInfo->maxTextureSize()
|
||||||
&& mPrimitiveFields.mHeight <= deviceInfo->maxTextureSize()
|
&& mPrimitiveFields.mHeight <= deviceInfo->maxTextureSize();
|
||||||
&& mPrimitiveFields.mWidth > 0
|
|
||||||
&& mPrimitiveFields.mHeight > 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool promotedToLayer() const {
|
bool promotedToLayer() const {
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ TEST(RenderProperties, layerValidity) {
|
|||||||
props.setLeftTopRightBottom(0, 0, maxTextureSize + 1, maxTextureSize + 1);
|
props.setLeftTopRightBottom(0, 0, maxTextureSize + 1, maxTextureSize + 1);
|
||||||
ASSERT_FALSE(props.fitsOnLayer());
|
ASSERT_FALSE(props.fitsOnLayer());
|
||||||
|
|
||||||
// Too small - can't have 0 dimen layer
|
// Too small, but still 'fits'. Not fitting is an error case, so don't report empty as such.
|
||||||
props.setLeftTopRightBottom(0, 0, 100, 0);
|
props.setLeftTopRightBottom(0, 0, 100, 0);
|
||||||
ASSERT_FALSE(props.fitsOnLayer());
|
ASSERT_TRUE(props.fitsOnLayer());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user