desktop/source/lib/init.cxx | 19 ++++++++++++++++++- include/LibreOfficeKit/LibreOfficeKit.h | 4 ++++ include/LibreOfficeKit/LibreOfficeKit.hxx | 11 +++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-)
New commits: commit 539f981900e1823d880f2050291b48f4c51994dd Author: Marco Cecchetti <marco.cecche...@collabora.com> Date: Sat Sep 10 21:02:36 2016 +0200 LOK: we use callbacks latch for not missing messages sent very early - lok::Document::setCallbackLatch: used on document load for set/unset the latch - now cell cursors of other views are correctly notified to the new view Change-Id: Ife6dca0e3e329b801d44070f55869afe95a2f313 Reviewed-on: https://gerrit.libreoffice.org/28812 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Marco Cecchetti <mrcek...@gmail.com> diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 0a83941..37a65d1 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -391,7 +391,6 @@ static void doc_getDocumentSize(LibreOfficeKitDocument* pThis, long* pHeight); static void doc_initializeForRendering(LibreOfficeKitDocument* pThis, const char* pArguments); - static void doc_registerCallback(LibreOfficeKitDocument* pThis, LibreOfficeKitCallback pCallback, void* pData); @@ -443,6 +442,9 @@ static unsigned char* doc_renderFont(LibreOfficeKitDocument* pThis, int* pFontWidth, int* pFontHeight); static char* doc_getPartHash(LibreOfficeKitDocument* pThis, int nPart); +static void doc_setCallbackLatch(LibreOfficeKitDocument* pThis, + bool bCallbackLatch); + LibLODocument_Impl::LibLODocument_Impl(const uno::Reference <css::lang::XComponent> &xComponent) : mxComponent(xComponent) @@ -489,6 +491,8 @@ LibLODocument_Impl::LibLODocument_Impl(const uno::Reference <css::lang::XCompone m_pDocumentClass->renderFont = doc_renderFont; m_pDocumentClass->getPartHash = doc_getPartHash; + m_pDocumentClass->setCallbackLatch = doc_setCallbackLatch; + gDocumentClass = m_pDocumentClass; } pClass = m_pDocumentClass.get(); @@ -2338,6 +2342,19 @@ unsigned char* doc_renderFont(LibreOfficeKitDocument* /*pThis*/, return nullptr; } +static void doc_setCallbackLatch(LibreOfficeKitDocument* pThis, bool bCallbackLatch) +{ + SolarMutexGuard aGuard; + LibLODocument_Impl* pDocument = static_cast<LibLODocument_Impl*>(pThis); + + int nView = SfxLokHelper::getView(); + if (nView < 0) + return; + + if (pDocument->mpCallbackFlushHandlers[nView]) + pDocument->mpCallbackFlushHandlers[nView]->setEventLatch(bCallbackLatch); +} + static char* lo_getError (LibreOfficeKit *pThis) { LibLibreOffice_Impl* pLib = static_cast<LibLibreOffice_Impl*>(pThis); diff --git a/include/LibreOfficeKit/LibreOfficeKit.h b/include/LibreOfficeKit/LibreOfficeKit.h index 81d65c1..53162a3 100644 --- a/include/LibreOfficeKit/LibreOfficeKit.h +++ b/include/LibreOfficeKit/LibreOfficeKit.h @@ -244,6 +244,10 @@ struct _LibreOfficeKitDocumentClass const int nTileWidth, const int nTileHeight); + /// @see lok::Document::setCallbackLatch(). + void (*setCallbackLatch) (LibreOfficeKitDocument* pThis, + bool bCallbackLatch); + #endif // defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY }; diff --git a/include/LibreOfficeKit/LibreOfficeKit.hxx b/include/LibreOfficeKit/LibreOfficeKit.hxx index eae43af..7c6a8d7 100644 --- a/include/LibreOfficeKit/LibreOfficeKit.hxx +++ b/include/LibreOfficeKit/LibreOfficeKit.hxx @@ -435,6 +435,17 @@ public: nTileWidth, nTileHeight); } + /** + * Enable/disable callbacks latch. LOK will set the latch when it wants to + * queue new callbacks but not flush them. + * + * @param bCallbackLatch: true enables the latch, false disables it. + */ + inline void setCallbackLatch(bool bCallbackLatch) + { + mpDoc->pClass->setCallbackLatch(mpDoc, bCallbackLatch); + } + #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