Commit 96f4f45e by Jamie Madill Committed by Commit Bot

Fix ImageIndexIterator termination.

There was an off-by-one error preventing proper iteration. BUG=angleproject:1493 BUG=chromium:638323 Change-Id: I8a3907620a1503d16b039606a67fe3471f88e165 Reviewed-on: https://chromium-review.googlesource.com/380325Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 3af2b3b0
......@@ -149,21 +149,29 @@ ImageIndex ImageIndexIterator::next()
if (mCurrentLayer != ImageIndex::ENTIRE_LEVEL)
{
if (mCurrentLayer < maxLayer()-1)
if (mCurrentLayer < maxLayer() - 1)
{
mCurrentLayer++;
}
else if (mCurrentMip < mMipRange.end-1)
else if (mCurrentMip < mMipRange.end - 1)
{
mCurrentMip++;
mCurrentLayer = mLayerRange.start;
}
else
{
done();
}
}
else if (mCurrentMip < mMipRange.end-1)
else if (mCurrentMip < mMipRange.end - 1)
{
mCurrentMip++;
mCurrentLayer = mLayerRange.start;
}
else
{
done();
}
return value;
}
......@@ -185,4 +193,10 @@ bool ImageIndexIterator::hasNext() const
return (mCurrentMip < mMipRange.end || mCurrentLayer < maxLayer());
}
void ImageIndexIterator::done()
{
mCurrentMip = mMipRange.end;
mCurrentLayer = maxLayer();
}
} // namespace gl
......@@ -68,6 +68,7 @@ class ImageIndexIterator
const Range<GLint> &layerRange, const GLsizei *layerCounts);
GLint maxLayer() const;
void done();
GLenum mType;
Range<GLint> mMipRange;
......
......@@ -41,6 +41,8 @@ TEST(ImageIndexTest, Iterator2D)
EXPECT_EQ(current.mipIndex, nextIndex.mipIndex);
EXPECT_EQ(current.layerIndex, nextIndex.layerIndex);
}
EXPECT_FALSE(iter.hasNext());
}
TEST(ImageIndexTest, IteratorCube)
......@@ -64,6 +66,8 @@ TEST(ImageIndexTest, IteratorCube)
EXPECT_TRUE(nextIndex.hasLayer());
}
}
EXPECT_FALSE(iter.hasNext());
}
TEST(ImageIndexTest, Iterator3D)
......@@ -85,6 +89,8 @@ TEST(ImageIndexTest, Iterator3D)
EXPECT_TRUE(nextIndex.hasLayer());
}
}
EXPECT_FALSE(iter.hasNext());
}
TEST(ImageIndexTest, Iterator2DArray)
......@@ -109,6 +115,8 @@ TEST(ImageIndexTest, Iterator2DArray)
EXPECT_TRUE(nextIndex.hasLayer());
}
}
EXPECT_FALSE(iter.hasNext());
}
} // namespace
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment