loolwsd/DocumentBroker.cpp | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-)
New commits: commit 787ee1d2d2719f4fed161dd66eb7d3e21c512bd3 Author: Michael Meeks <[email protected]> Date: Wed Sep 14 22:15:43 2016 +0100 Revert "loolwsd: don't combine tiles by row to allow for better culling" This breaks combine-tiles very significantly, viewing images in documents with this appears to show each tile scaling and rendering individually. This reverts commit 99d0ee2ac111e7199626f6c17fb7ce723dac9126. diff --git a/loolwsd/DocumentBroker.cpp b/loolwsd/DocumentBroker.cpp index fe73d63..043218f 100644 --- a/loolwsd/DocumentBroker.cpp +++ b/loolwsd/DocumentBroker.cpp @@ -532,7 +532,8 @@ void DocumentBroker::handleTileCombinedRequest(TileCombined& tileCombined, Log::trace() << "TileCombined request for " << tileCombined.serialize() << Log::end; // Satisfy as many tiles from the cache. - std::vector<TileDesc> tiles; + // The rest, group by rows. + std::map<int, std::vector<TileDesc>> rows; for (auto& tile : tileCombined.getTiles()) { std::unique_ptr<std::fstream> cachedTile = _tileCache->lookupTile(tile); @@ -586,16 +587,34 @@ void DocumentBroker::handleTileCombinedRequest(TileCombined& tileCombined, } } - tiles.push_back(tile); + const auto tilePosY = tile.getTilePosY(); + auto it = rows.lower_bound(tilePosY); + if (it != rows.end()) + { + it->second.emplace_back(tile); + } + else + { + rows.emplace_hint(it, tilePosY, std::vector<TileDesc>({ tile })); + } } - for (auto& tile : tiles) + if (rows.empty()) { - const auto tileMsg = tile.serialize("tile "); + // Done. + return; + } + + auto& tiles = tileCombined.getTiles(); + for (auto& row : rows) + { + tiles = row.second; + const auto tileMsg = tileCombined.serialize(); Log::debug() << "TileCombined residual request for " << tileMsg << Log::end; // Forward to child to render. - _childProcess->getWebSocket()->sendFrame(tileMsg.data(), tileMsg.size()); + const std::string request = "tilecombine " + tileMsg; + _childProcess->getWebSocket()->sendFrame(request.data(), request.size()); } } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
