[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.1' - desktop/source include/LibreOfficeKit
Marco Cecchetti
marco.cecchetti at collabora.com
Sun Sep 11 17:07:27 UTC 2016
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 bbae556d12e4edf7795b0b5643df77fd8cdbdacd
Author: Marco Cecchetti <marco.cecchetti at 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/28811
Reviewed-by: Marco Cecchetti <mrcekets at gmail.com>
Tested-by: Marco Cecchetti <mrcekets at gmail.com>
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index cb86a63..f678d69 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -392,7 +392,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);
@@ -444,6 +443,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)
@@ -490,6 +492,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();
@@ -2341,6 +2345,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 aae5f38..d2d6877 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
};
More information about the Libreoffice-commits
mailing list