vcl/win/gdi/gdiimpl.cxx | 10 ++++------ vcl/win/gdi/scoped_gdi.hxx | 7 +++++++ 2 files changed, 11 insertions(+), 6 deletions(-)
New commits: commit bcbcfa7927c575ddb1379b3cd8ef1b2df709ba66 Author: Dmitriy Shilin <ds...@fastmail.com> AuthorDate: Sun Jan 6 23:53:45 2019 -0800 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Tue Jan 8 11:12:14 2019 +0100 tdf#107792 vcl/win/gdi: introduce ScopedHRGN Change-Id: I3d103dcb6ebb81d50bb8a10371dba7feb92c421d Reviewed-on: https://gerrit.libreoffice.org/65924 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/vcl/win/gdi/gdiimpl.cxx b/vcl/win/gdi/gdiimpl.cxx index 2eb537931d50..1bb39b84cd2e 100644 --- a/vcl/win/gdi/gdiimpl.cxx +++ b/vcl/win/gdi/gdiimpl.cxx @@ -296,9 +296,8 @@ void MakeInvisibleArea(const RECT& rSrcRect, rhInvalidateRgn = CreateRectRgnIndirect(&rSrcRect); } - HRGN hTempRgn = CreateRectRgn(nLeft, nTop, nRight, nBottom); - CombineRgn(rhInvalidateRgn, rhInvalidateRgn, hTempRgn, RGN_DIFF); - DeleteRegion(hTempRgn); + ScopedHRGN hTempRgn(CreateRectRgn(nLeft, nTop, nRight, nBottom)); + CombineRgn(rhInvalidateRgn, rhInvalidateRgn, hTempRgn.get(), RGN_DIFF); } void ImplCalcOutSideRgn( const RECT& rSrcRect, @@ -1259,9 +1258,8 @@ bool WinSalGraphicsImpl::setClipRegion( const vcl::Region& i_rClip ) for( sal_uLong n = 1; n < pHeader.nCount; n++, pRect++ ) { - HRGN hRgn = CreateRectRgn( pRect->left, pRect->top, pRect->right, pRect->bottom ); - CombineRgn( mrParent.mhRegion, mrParent.mhRegion, hRgn, RGN_OR ); - DeleteRegion( hRgn ); + ScopedHRGN hRgn(CreateRectRgn(pRect->left, pRect->top, pRect->right, pRect->bottom)); + CombineRgn( mrParent.mhRegion, mrParent.mhRegion, hRgn.get(), RGN_OR ); } } } diff --git a/vcl/win/gdi/scoped_gdi.hxx b/vcl/win/gdi/scoped_gdi.hxx index 64dbd180b969..90af7340f06a 100644 --- a/vcl/win/gdi/scoped_gdi.hxx +++ b/vcl/win/gdi/scoped_gdi.hxx @@ -21,7 +21,14 @@ struct HBRUSHDeleter void operator()(HBRUSH hBrush) { DeleteBrush(hBrush); } }; +struct HRGNDeleter +{ + using pointer = HRGN; + void operator()(HRGN hRgn) { DeleteRegion(hRgn); } +}; + using ScopedHBRUSH = std::unique_ptr<HBRUSH, HBRUSHDeleter>; +using ScopedHRGN = std::unique_ptr<HRGN, HRGNDeleter>; #endif // INCLUDED_VCL_WIN_GDI_SCOPED_GDI_HXX _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits