diff options
Diffstat (limited to 'desktop/source/lib/init.cxx')
-rw-r--r-- | desktop/source/lib/init.cxx | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index bf36321fc9a0..0b405be858e0 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -575,6 +575,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-----"); @@ -1076,7 +1083,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)); } ); } @@ -1373,11 +1380,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) { |