@@ -1499,7 +1499,7 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
14991499 break ;
15001500 const size_t cmdStartOffset = offset;
15011501 const uint32_t cmdType = readVarint (data, offset, dataSize);
1502-
1502+
15031503 // Since commands are pre-sorted by layer but we can't detect layer changes,
15041504 // we'll be more conservative and flush batches more frequently to ensure
15051505 // proper layer ordering. Flush every 50 commands to maintain layer integrity.
@@ -1511,6 +1511,10 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
15111511
15121512 switch (cmdType)
15131513 {
1514+ case SET_LAYER:
1515+ // Ignore SET_LAYER command as tiles are already sorted by layers
1516+ readVarint (data, offset, dataSize);
1517+ break ;
15141518 case SET_COLOR:
15151519 flushCurrentBatch ();
15161520 if (offset < dataSize)
@@ -1574,11 +1578,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
15741578 if (!px || !py)
15751579 {
15761580 // Skip this command if allocation failed
1577- for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1578- {
1579- readZigzag (data, offset, dataSize);
1580- readZigzag (data, offset, dataSize);
1581- }
1581+ for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1582+ {
1583+ readZigzag (data, offset, dataSize);
1584+ readZigzag (data, offset, dataSize);
1585+ }
15821586 continue ;
15831587 }
15841588 int32_t prevX = readZigzag (data, offset, dataSize);
@@ -1608,11 +1612,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
16081612 }
16091613 else
16101614 {
1611- for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1612- {
1613- readZigzag (data, offset, dataSize);
1614- readZigzag (data, offset, dataSize);
1615- }
1615+ for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1616+ {
1617+ readZigzag (data, offset, dataSize);
1618+ readZigzag (data, offset, dataSize);
1619+ }
16161620 }
16171621 }
16181622 break ;
@@ -1631,11 +1635,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
16311635 int * py = pyGuard.get ();
16321636 if (!px || !py)
16331637 {
1634- for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1635- {
1636- readZigzag (data, offset, dataSize);
1637- readZigzag (data, offset, dataSize);
1638- }
1638+ for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1639+ {
1640+ readZigzag (data, offset, dataSize);
1641+ readZigzag (data, offset, dataSize);
1642+ }
16391643 break ;
16401644 }
16411645 if (!unifiedPolygonLogged)
@@ -1666,11 +1670,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
16661670 }
16671671 else
16681672 {
1669- for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1670- {
1671- readZigzag (data, offset, dataSize);
1672- readZigzag (data, offset, dataSize);
1673- }
1673+ for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1674+ {
1675+ readZigzag (data, offset, dataSize);
1676+ readZigzag (data, offset, dataSize);
1677+ }
16741678 }
16751679 }
16761680 break ;
@@ -1688,11 +1692,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
16881692 int * py = pyGuard.get ();
16891693 if (!px || !py)
16901694 {
1691- for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1692- {
1693- readZigzag (data, offset, dataSize);
1694- readZigzag (data, offset, dataSize);
1695- }
1695+ for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1696+ {
1697+ readZigzag (data, offset, dataSize);
1698+ readZigzag (data, offset, dataSize);
1699+ }
16961700 break ;
16971701 }
16981702 if (!unifiedPolygonsLogged)
@@ -1727,11 +1731,11 @@ bool Maps::renderTile(const char* path, const int16_t xOffset, const int16_t yOf
17271731 }
17281732 else
17291733 {
1730- for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1731- {
1732- readZigzag (data, offset, dataSize);
1733- readZigzag (data, offset, dataSize);
1734- }
1734+ for (uint32_t i = 0 ; i < numPoints && offset < dataSize; ++i)
1735+ {
1736+ readZigzag (data, offset, dataSize);
1737+ readZigzag (data, offset, dataSize);
1738+ }
17351739 }
17361740 }
17371741 break ;
0 commit comments