diff options
author | Gabriel Masei <gabriel.masei@1and1.ro> | 2021-06-16 09:41:12 +0300 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2021-06-16 10:16:50 +0200 |
commit | bf6dabe0ebad3cc5bc0edc04ae74fba0190b6203 (patch) | |
tree | d0807dbc845034a2d1b3c4495753b8f2fdd5b65e /vcl/source/window/paint.cxx | |
parent | 01e4acd1dc3bfedb9c37b4b9bb93be1201b475a5 (diff) |
vcl: check mpWindowImpl for nullptr
Change-Id: I492c7d5c1846df7507b1f043b80de4e61ff8ca86
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117282
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Diffstat (limited to 'vcl/source/window/paint.cxx')
-rw-r--r-- | vcl/source/window/paint.cxx | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/vcl/source/window/paint.cxx b/vcl/source/window/paint.cxx index d595bd78d82d..734e4d8ed63b 100644 --- a/vcl/source/window/paint.cxx +++ b/vcl/source/window/paint.cxx @@ -623,6 +623,9 @@ void Window::ImplCallPaint(const vcl::Region* pRegion, ImplPaintFlags nPaintFlag void Window::ImplCallOverlapPaint() { + if (!mpWindowImpl) + return; + // emit overlapping windows first vcl::Window* pTempWindow = mpWindowImpl->mpFirstOverlap; while ( pTempWindow ) @@ -985,7 +988,7 @@ void Window::ImplValidate() void Window::ImplUpdateAll() { - if ( !mpWindowImpl->mbReallyVisible ) + if ( !mpWindowImpl || !mpWindowImpl->mbReallyVisible ) return; bool bFlush = false; @@ -1264,6 +1267,9 @@ bool Window::HasPaintEvent() const void Window::PaintImmediately() { + if (!mpWindowImpl) + return; + if ( mpWindowImpl->mpBorderWindow ) { mpWindowImpl->mpBorderWindow->PaintImmediately(); @@ -1315,7 +1321,11 @@ void Window::PaintImmediately() // trigger an update also for system windows on top of us, // otherwise holes would remain - vcl::Window* pUpdateOverlapWindow = ImplGetFirstOverlapWindow()->mpWindowImpl->mpFirstOverlap; + vcl::Window* pUpdateOverlapWindow = ImplGetFirstOverlapWindow(); + if (pUpdateOverlapWindow->mpWindowImpl) + pUpdateOverlapWindow = pUpdateOverlapWindow->mpWindowImpl->mpFirstOverlap; + else + pUpdateOverlapWindow = nullptr; while ( pUpdateOverlapWindow ) { pUpdateOverlapWindow->PaintImmediately(); @@ -1545,6 +1555,9 @@ void Window::ImplPaintToDevice( OutputDevice* i_pTargetOutDev, const Point& i_rP void Window::PaintToDevice(OutputDevice* pDev, const Point& rPos) { + if( !mpWindowImpl ) + return; + SAL_WARN_IF( pDev->HasMirroredGraphics(), "vcl.window", "PaintToDevice to mirroring graphics" ); SAL_WARN_IF( pDev->IsRTLEnabled(), "vcl.window", "PaintToDevice to mirroring device" ); |