desktop/inc/lib/init.hxx | 3 +++ desktop/source/lib/init.cxx | 18 ++++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-)
New commits: commit 338708e46cf947e6381cd3e5a5be1993c483b045 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> AuthorDate: Fri Feb 15 09:39:57 2019 -0500 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Tue Mar 5 23:01:22 2019 +0100 LOK: reuse cached json object for ViewId where available Change-Id: I5e29ec2863e06d3dfcbad95c55e355805f12e259 Reviewed-on: https://gerrit.libreoffice.org/68272 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> diff --git a/desktop/inc/lib/init.hxx b/desktop/inc/lib/init.hxx index 2ba5595d8b46..013162aa990f 100644 --- a/desktop/inc/lib/init.hxx +++ b/desktop/inc/lib/init.hxx @@ -116,6 +116,9 @@ namespace desktop { /// Validate that the payload and parsed object match. bool validate() const; + /// Returns true iff there is cached data. + bool isCached() const { return PayloadObject.which() != 0; } + int Type; std::string PayloadString; diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index b621f134b5f4..262b722ece7f 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -94,7 +94,6 @@ #include <sfx2/msgpool.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/lokcharthelper.hxx> -#include <sfx2/lokhelper.hxx> #include <sfx2/DocumentSigner.hxx> #include <svx/dialmgr.hxx> #include <svx/dialogs.hrc> @@ -578,6 +577,13 @@ int lcl_getViewId(const std::string& payload) return 0; } +int lcl_getViewId(const desktop::CallbackFlushHandler::CallbackData& rCallbackData) +{ + if (rCallbackData.isCached()) + return rCallbackData.getJson().get<int>("viewId"); + return lcl_getViewId(rCallbackData.PayloadString); +} + std::string extractCertificate(const std::string & certificate) { const std::string header("-----BEGIN CERTIFICATE-----"); @@ -1079,7 +1085,7 @@ void CallbackFlushHandler::queue(const int type, const char* data) const int nViewId = lcl_getViewId(payload); removeAll( [type, nViewId] (const queue_type::value_type& elem) { - return (elem.Type == type && nViewId == lcl_getViewId(elem.PayloadString)); + return (elem.Type == type && nViewId == lcl_getViewId(elem)); } ); } @@ -1380,11 +1386,11 @@ void CallbackFlushHandler::Invoke() std::unique_lock<std::mutex> lock(m_mutex); SAL_INFO("lok", "Flushing " << m_queue.size() << " elements."); - for (auto& pair : m_queue) + for (const auto& rCallbackData : m_queue) { - const int type = pair.Type; - const auto& payload = pair.PayloadString; - const int viewId = lcl_isViewCallbackType(type) ? lcl_getViewId(payload) : -1; + const int type = rCallbackData.Type; + const auto& payload = rCallbackData.PayloadString; + const int viewId = lcl_isViewCallbackType(type) ? lcl_getViewId(rCallbackData) : -1; if (viewId == -1) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits