loolwsd/LOOLKit.cpp | 37 +++------------- loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h | 13 +++++ 2 files changed, 20 insertions(+), 30 deletions(-)
New commits: commit 8e480d7ac12fbdad5a983e4ef594392b440f0b7c Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Fri May 6 11:03:34 2016 -0400 loolwsd: use paintPartTile and remove workarounds Change-Id: Ice59004a23919c7a77a00782f7210a83bc1464e7 Reviewed-on: https://gerrit.libreoffice.org/24703 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp index 60b3e02..2f524cb 100644 --- a/loolwsd/LOOLKit.cpp +++ b/loolwsd/LOOLKit.cpp @@ -659,24 +659,11 @@ public: std::vector<unsigned char> pixmap; pixmap.resize(4 * width * height); - int oldPart = _loKitDocument->pClass->getPart(_loKitDocument); - if (part != oldPart) - { - if (editLock || id != -1) - { - _loKitDocument->pClass->setPart(_loKitDocument, part); - } - else - { - // Session without editlock cannot change part - Log::debug() << "Declining tile render request: " << response << Log::end; - ws->sendFrame(response.data(), response.size()); - return; - } - } Timestamp timestamp; - _loKitDocument->pClass->paintTile(_loKitDocument, pixmap.data(), width, height, tilePosX, tilePosY, tileWidth, tileHeight); + _loKitDocument->pClass->paintPartTile(_loKitDocument, pixmap.data(), part, + width, height, tilePosX, tilePosY, + tileWidth, tileHeight); Log::trace() << "paintTile at [" << tilePosX << ", " << tilePosY << "] rendered in " << (timestamp.elapsed()/1000.) << " ms" << Log::end; @@ -689,12 +676,6 @@ public: return; } - // restore the original part if tilepreview request changed the part - if (id != -1) - { - _loKitDocument->pClass->setPart(_loKitDocument, oldPart); - } - const auto length = output.size(); if (length > SMALL_MESSAGE_SIZE) { @@ -789,11 +770,6 @@ public: tiles.push_back(rectangle); } - if (_docType != "text" && part != _loKitDocument->pClass->getPart(_loKitDocument)) - { - _loKitDocument->pClass->setPart(_loKitDocument, part); - } - LibreOfficeKitTileMode mode = static_cast<LibreOfficeKitTileMode>(_loKitDocument->pClass->getTileMode(_loKitDocument)); int tilesByX = renderArea.getWidth() / tileWidth; @@ -807,9 +783,10 @@ public: std::vector<unsigned char> pixmap(pixmapSize, 0); Timestamp timestamp; - _loKitDocument->pClass->paintTile(_loKitDocument, pixmap.data(), pixmapWidth, pixmapHeight, - renderArea.getLeft(), renderArea.getTop(), - renderArea.getWidth(), renderArea.getHeight()); + _loKitDocument->pClass->paintPartTile(_loKitDocument, pixmap.data(), part, + pixmapWidth, pixmapHeight, + renderArea.getLeft(), renderArea.getTop(), + renderArea.getWidth(), renderArea.getHeight()); Log::debug() << "paintTile (combined) called, tile at [" << renderArea.getLeft() << ", " << renderArea.getTop() << "]" << " (" << renderArea.getWidth() << ", " << renderArea.getHeight() << ") rendered in " diff --git a/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h index 1281a21..110d4d5 100644 --- a/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h +++ b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h @@ -228,6 +228,19 @@ struct _LibreOfficeKitDocumentClass /// @see lok::Document::getPartHash(). char* (*getPartHash) (LibreOfficeKitDocument* pThis, int nPart); + + /// Paints a tile from a specific part. + /// @see lok::Document::paintTile(). + void (*paintPartTile) (LibreOfficeKitDocument* pThis, + unsigned char* pBuffer, + const int nPart, + const int nCanvasWidth, + const int nCanvasHeight, + const int nTilePosX, + const int nTilePosY, + const int nTileWidth, + const int nTileHeight); + #endif // defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY }; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits