Skip to content
Snippets Groups Projects
Commit 24199ae5 authored by Guillaume Pasero's avatar Guillaume Pasero
Browse files

BUG: fix other potential issues with AdaptativeSplitter see #983

parent 861ed67a
No related branches found
No related tags found
No related merge requests found
......@@ -181,7 +181,9 @@ ImageRegionAdaptativeSplitter<VImageDimension>
unsigned int i = 1;
while(totalTiles * (divideTiles[0] * divideTiles[1]) < m_RequestedNumberOfSplits)
// Exit condition if divideTiles=m_TileHint (i.e. no more subdivision available)
while(totalTiles * (divideTiles[0] * divideTiles[1]) < m_RequestedNumberOfSplits
&& (divideTiles[0] < m_TileHint[0] || divideTiles[1] < m_TileHint[1]))
{
if(divideTiles[i] < m_TileHint[i])
{
......@@ -195,6 +197,8 @@ ImageRegionAdaptativeSplitter<VImageDimension>
splitSize[0] = (m_TileHint[0] + divideTiles[0] - 1)/ divideTiles[0];
splitSize[1] = (m_TileHint[1] + divideTiles[1] - 1)/ divideTiles[1];
RegionType tileHintRegion;
tileHintRegion.SetSize(m_TileHint);
// Fill the tiling scheme
for(unsigned int tiley = 0; tiley < tilesPerDim[1]; ++tiley)
{
......@@ -214,13 +218,21 @@ ImageRegionAdaptativeSplitter<VImageDimension>
newSplit.SetIndex(newSplitIndex);
newSplit.SetSize(splitSize);
tileHintRegion.SetIndex(0, tilex * m_TileHint[0]);
tileHintRegion.SetIndex(1, tiley * m_TileHint[1]);
bool cropped = newSplit.Crop(m_ImageRegion);
// If newSplit could not be cropped, it means that it is
// outside m_ImageRegion. In this case we ignore it.
if(cropped)
{
m_StreamVector.push_back(newSplit);
// check that the split stays inside its tile
cropped = newSplit.Crop(tileHintRegion);
if (cropped)
{
m_StreamVector.push_back(newSplit);
}
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment