summaryrefslogtreecommitdiff
path: root/desktop/inc
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2021-10-12 14:24:44 +0200
committerLuboš Luňák <l.lunak@collabora.com>2021-10-15 13:40:30 +0200
commitcb60edbc2c0725f0309a5b934f41e999a1fe0c5f (patch)
tree6941072413b55874a0c794d33dc4391abf5f710a /desktop/inc
parent3b729db05553c1a6d461fb41c89a05702f407448 (diff)
delay, collect and compress LOK invalidations for Writer views
Due the to way views are updated on any document change, invalidations are at least O(n^2), and since LOK may use a number of views and for each view the entire document is considered to be the view area, this can lead to a huge number of invalidations that are mostly the same repeated rectangles. Change-Id: I63682958d2fc388344641dcd19fa1d2b39054b51 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123617 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'desktop/inc')
-rw-r--r--desktop/inc/lib/init.hxx3
1 files changed, 3 insertions, 0 deletions
diff --git a/desktop/inc/lib/init.hxx b/desktop/inc/lib/init.hxx
index b31b52eabaa0..9f15377ba0ec 100644
--- a/desktop/inc/lib/init.hxx
+++ b/desktop/inc/lib/init.hxx
@@ -98,6 +98,8 @@ namespace desktop {
void addViewStates(int viewId);
void removeViewStates(int viewId);
+ void setViewId( int viewId ) { m_viewId = viewId; }
+
// SfxLockCallbackInterface
virtual void libreOfficeKitViewCallback(int nType, const char* pPayload) override;
virtual void libreOfficeKitViewCallback(int nType, const char* pPayload, int nViewId) override;
@@ -177,6 +179,7 @@ namespace desktop {
std::map<int, std::string> m_states;
std::unordered_map<int, std::unordered_map<int, std::string>> m_viewStates;
LibreOfficeKitDocument* m_pDocument;
+ int m_viewId = -1; // view id of the associated SfxViewShell
LibreOfficeKitCallback m_pCallback;
void *m_pData;
int m_nDisableCallbacks;