[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.0-29' - vcl/source
Michael Meeks (via logerrit)
logerrit at kemper.freedesktop.org
Tue Jan 14 14:29:58 UTC 2020
vcl/source/window/paint.cxx | 6 +++++-
vcl/source/window/window2.cxx | 5 +++--
2 files changed, 8 insertions(+), 3 deletions(-)
New commits:
commit 1ba5340970ccccb56e271f9e72935c9d7d2c54eb
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Fri Jan 10 12:42:30 2020 +0000
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Tue Jan 14 15:29:29 2020 +0100
lok: avoid emission storms of un-necessary invalidations.
Common when constructing widgets with VclBuilder - which avoids
the 'Show' detection Pranav introduced in 8de98e61fbc.
This saves ~80% of the ~100k mostly bogus calls I get to:
desktop::CallbackFlushHandler::processWindowEvent when opening
and closing a few windows.
Change-Id: Ie508d6e19274472b85543275aee33f078ddcbbb2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86537
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/vcl/source/window/paint.cxx b/vcl/source/window/paint.cxx
index 6fd447cbce70..7d031fcc1b2a 100644
--- a/vcl/source/window/paint.cxx
+++ b/vcl/source/window/paint.cxx
@@ -1218,6 +1218,10 @@ void Window::LogicInvalidate(const tools::Rectangle* pRectangle)
if (comphelper::LibreOfficeKit::isDialogPainting() || !comphelper::LibreOfficeKit::isActive())
return;
+ Size aSize = GetSizePixel();
+ if (aSize.getWidth() <= 0 || aSize.getHeight() <= 0)
+ return;
+
if (const vcl::ILibreOfficeKitNotifier* pNotifier = GetLOKNotifier())
{
// In case we are routing the window, notify the client
@@ -1226,7 +1230,7 @@ void Window::LogicInvalidate(const tools::Rectangle* pRectangle)
aPayload.push_back(std::make_pair(OString("rectangle"), pRectangle->toString()));
else
{
- const tools::Rectangle aRect(Point(0, 0), GetSizePixel());
+ const tools::Rectangle aRect(Point(0, 0), aSize);
aPayload.push_back(std::make_pair(OString("rectangle"), aRect.toString()));
}
diff --git a/vcl/source/window/window2.cxx b/vcl/source/window/window2.cxx
index 214226a9ae4f..7729f42db6b7 100644
--- a/vcl/source/window/window2.cxx
+++ b/vcl/source/window/window2.cxx
@@ -1406,10 +1406,11 @@ void Window::queue_resize(StateChangedType eReason)
if (pBorderWindow)
pBorderWindow->Resize();
}
-
if (VclPtr<vcl::Window> pParent = GetParentWithLOKNotifier())
{
- if (!pParent->IsInInitShow())
+ Size aSize = GetSizePixel();
+ if (aSize.getWidth() > 0 && aSize.getHeight() > 0 &&
+ !pParent->IsInInitShow())
LogicInvalidate(nullptr);
}
}
More information about the Libreoffice-commits
mailing list