[Libreoffice-commits] core.git: vcl/headless vcl/source
vcl/headless/CairoCommon.cxx | 14 +++--- vcl/source/window/cursor.cxx |8 +++- 2 files changed, 10 insertions(+), 12 deletions(-) New commits: commit 6dc41e33e087032a52ee11832ff1299632b4f5dd Author: Caolán McNamara AuthorDate: Mon May 9 17:34:46 2022 +0100 Commit: Caolán McNamara CommitDate: Mon May 9 22:30:22 2022 +0200 Related: tdf#148433 experiment with SAL_DISABLE_CURSOR_INDICATOR to turn off the arrow indicators in BiDi cursor Change-Id: I5ed96bccf17432e63564bdfc1c7d2ad4fecdd2a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134090 Tested-by: Caolán McNamara Reviewed-by: Caolán McNamara diff --git a/vcl/headless/CairoCommon.cxx b/vcl/headless/CairoCommon.cxx index 2e2dcaecec6f..73a6b72f802e 100644 --- a/vcl/headless/CairoCommon.cxx +++ b/vcl/headless/CairoCommon.cxx @@ -960,16 +960,8 @@ cairo_pattern_t* create_stipple() } } // end anonymous ns -namespace -{ -// check for env var that deciding to disable CAIRO_OPERATOR_DIFFERENCE -const char* pDisableDifference(getenv("SAL_DISABLE_CAIRO_DIFFERENCE")); -bool bDisableDifference(nullptr != pDisableDifference); -} - #if defined CAIRO_VERSION && CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 10, 0) #define CAIRO_OPERATOR_DIFFERENCE (static_cast(23)) -#define CAIRO_OPERATOR_EXCLUSION (static_cast(24)) #endif void CairoCommon::invert(const basegfx::B2DPolygon& rPoly, SalInvert nFlags, bool bAntiAlias) @@ -984,13 +976,13 @@ void CairoCommon::invert(const basegfx::B2DPolygon& rPoly, SalInvert nFlags, boo cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); -if (bDisableDifference) +if (cairo_version() >= CAIRO_VERSION_ENCODE(1, 10, 0)) { -cairo_set_operator(cr, CAIRO_OPERATOR_EXCLUSION); +cairo_set_operator(cr, CAIRO_OPERATOR_DIFFERENCE); } else { -cairo_set_operator(cr, CAIRO_OPERATOR_DIFFERENCE); +SAL_WARN("vcl.gdi", "SvpSalGraphics::invert, archaic cairo"); } if (nFlags & SalInvert::TrackFrame) diff --git a/vcl/source/window/cursor.cxx b/vcl/source/window/cursor.cxx index 6a186da9432c..406491ed1d65 100644 --- a/vcl/source/window/cursor.cxx +++ b/vcl/source/window/cursor.cxx @@ -43,6 +43,12 @@ struct ImplCursorData VclPtr mpWindow; // assigned window }; +namespace +{ +const char* pDisableCursorIndicator(getenv("SAL_DISABLE_CURSOR_INDICATOR")); +bool bDisableCursorIndicator(nullptr != pDisableCursorIndicator); +} + static tools::Rectangle ImplCursorInvert(vcl::RenderContext* pRenderContext, ImplCursorData const * pData) { tools::Rectangle aPaintRect; @@ -65,7 +71,7 @@ static tools::Rectangle ImplCursorInvert(vcl::RenderContext* pRenderContext, Imp aPoly[2].AdjustX(1 ); // apply direction flag after slant to use the correct shape -if ( pData->mnDirection != CursorDirection::NONE) +if (!bDisableCursorIndicator && pData->mnDirection != CursorDirection::NONE) { Point pAry[7]; // Related system settings for "delta" could be:
[Libreoffice-commits] core.git: vcl/headless vcl/source vcl/unx
vcl/headless/headlessinst.cxx | 13 vcl/source/fontsubset/cff.cxx | 12 vcl/source/fontsubset/fontsubset.cxx |3 vcl/source/fontsubset/sft.cxx | 37 + vcl/source/fontsubset/ttcr.cxx | 17 vcl/unx/generic/app/i18n_cb.cxx| 42 +- vcl/unx/generic/app/i18n_ic.cxx|6 vcl/unx/generic/app/i18n_im.cxx| 43 +- vcl/unx/generic/app/i18n_xkb.cxx | 15 vcl/unx/generic/app/randrwrapper.cxx | 12 vcl/unx/generic/app/saldata.cxx|4 vcl/unx/generic/app/saldisp.cxx| 185 + vcl/unx/generic/app/salinst.cxx|5 vcl/unx/generic/app/wmadaptor.cxx | 39 +- vcl/unx/generic/dtrans/X11_clipboard.cxx | 16 vcl/unx/generic/dtrans/X11_selection.cxx | 486 +++-- vcl/unx/generic/dtrans/bmp.cxx | 26 - vcl/unx/generic/dtrans/config.cxx | 17 vcl/unx/generic/fontmanager/fontconfig.cxx |6 vcl/unx/generic/fontmanager/fontmanager.cxx| 15 vcl/unx/generic/fontmanager/fontsubst.cxx | 56 +- vcl/unx/generic/gdi/salgdi.cxx |8 vcl/unx/generic/print/genprnpsp.cxx| 14 vcl/unx/generic/printer/printerinfomanager.cxx | 82 ++-- vcl/unx/generic/window/salframe.cxx| 38 + vcl/unx/generic/window/salobj.cxx | 14 vcl/unx/gtk3/gtk3gtkframe.cxx | 26 - vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx | 15 vcl/unx/gtk3/gtk3salprn-gtk.cxx|4 29 files changed, 770 insertions(+), 486 deletions(-) New commits: commit 317c05a88f79096422681a23b61aa6ae9f3f084b Author: Yukio Siraichi AuthorDate: Thu Apr 16 12:47:29 2020 +0900 Commit: Stephan Bergmann CommitDate: Mon Apr 20 10:24:18 2020 +0200 tdf#130924 [vcl] replace `*printf`s with `SAL_*` logging macros. Change-Id: Ie3ec1e1767478bce12eecf7bfee02ed2d45fe58c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92331 Tested-by: Jenkins Reviewed-by: Stephan Bergmann diff --git a/vcl/headless/headlessinst.cxx b/vcl/headless/headlessinst.cxx index c1bf1a7b7294..e1694c429d2b 100644 --- a/vcl/headless/headlessinst.cxx +++ b/vcl/headless/headlessinst.cxx @@ -31,9 +31,10 @@ public: const std::vector< OUString >& rButtons ) override { (void)rButtons; -::fprintf(stdout, "LibreOffice - dialog '%s': '%s'", -OUStringToOString(rTitle, RTL_TEXTENCODING_ASCII_US).getStr(), -OUStringToOString(rMessage, RTL_TEXTENCODING_ASCII_US).getStr()); +SAL_INFO("vcl.headless", +"LibreOffice - dialog '" +<< rTitle << "': '" +<< rMessage << "'"); return 0; } }; @@ -56,10 +57,10 @@ void SalAbort( const OUString& rErrorText, bool bDumpCore ) OUString aError( rErrorText ); if( aError.isEmpty() ) aError = "Unknown application error"; -::fprintf( stderr, "%s\n", OUStringToOString(rErrorText, osl_getThreadTextEncoding()).getStr() ); -::fprintf( stderr, "SalAbort: '%s'", -OUStringToOString(aError, RTL_TEXTENCODING_ASCII_US).getStr()); +SAL_WARN("vcl.headless", rErrorText); +SAL_INFO("vcl.headless", "SalAbort: '" << aError << "'."); + if( bDumpCore ) abort(); else diff --git a/vcl/source/fontsubset/cff.cxx b/vcl/source/fontsubset/cff.cxx index 98f0101f047f..dd7da8d92ae7 100644 --- a/vcl/source/fontsubset/cff.cxx +++ b/vcl/source/fontsubset/cff.cxx @@ -442,7 +442,7 @@ void CffSubsetterContext::readDictOp() //TODO: if( nStackIdx > 0) int nInt = 0; switch( *pCmdName) { -default: fprintf( stderr, "unsupported DictOp.type=\'%c\'\n", *pCmdName); break; +default: SAL_WARN("vcl.fonts", "unsupported DictOp.type='" << *pCmdName << "'."); break; case 'b': // bool nInt = popInt(); switch( nOpId) { @@ -1051,7 +1051,7 @@ void CffSubsetterContext::convertOneTypeEsc() } break; default: -fprintf( stderr,"unhandled type2esc %d\n", nType2Esc); +SAL_WARN("vcl.fonts", "unhandled type2esc " << nType2Esc); assert( false); break; } @@ -1226,7 +1226,7 @@ int CffSubsetterContext::seekIndexData( int nIndexBase, int nDataIndex) mpReadPtr += 3 + (nDataOfsSz * nDataIndex); int nOfs1 = 0; switch( nDataOfsSz) { -default: fprintf( stderr, "\tINVALID nDataOfsSz=%d\n\n", nDataOfsSz); return -1; +default: SAL_WARN("vcl.fonts", "\tINVALID nDataOfsSz=" << nDataOfsSz); return -1; case 1: nOfs1 = mpReadPtr[0]; break; case 2: nOfs1 = (mpReadPtr[0]<<8) + mpReadPtr[1]; break; case 3: nOfs1 = (mpReadPtr[0]<<16) + (mpReadPtr[1]<<8) +
[Libreoffice-commits] core.git: vcl/headless vcl/source
vcl/headless/svpinst.cxx |4 +++- vcl/source/outdev/text.cxx |4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) New commits: commit 2bf8469cbca01e53043097708909f6cdf2aae264 Author: Thorsten Behrens AuthorDate: Tue Nov 20 20:53:50 2018 +0100 Commit: Thorsten Behrens CommitDate: Wed Nov 21 01:07:43 2018 +0100 Fix headless build on Linux Conditional-compile some OpenGL-ness that crept in Change-Id: I8d12f34db3b4875470a0d81e9ef6a1654153b206 Reviewed-on: https://gerrit.libreoffice.org/63676 Tested-by: Jenkins Reviewed-by: Thorsten Behrens diff --git a/vcl/headless/svpinst.cxx b/vcl/headless/svpinst.cxx index 5f7176e748d1..330b69ab27dd 100644 --- a/vcl/headless/svpinst.cxx +++ b/vcl/headless/svpinst.cxx @@ -28,7 +28,9 @@ #include #include -#include +#ifndef LIBO_HEADLESS +# include +#endif #include #include diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index c6dbedddbe5c..2bb81ad8da2d 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -35,7 +35,9 @@ #include #include #include -#include +#ifdef MACOSX +# include +#endif #include #include ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: vcl/headless vcl/source
vcl/headless/svpgdi.cxx | 20 vcl/source/bitmap/BitmapTools.cxx |9 +++-- 2 files changed, 23 insertions(+), 6 deletions(-) New commits: commit 2ca4b505b25e13c9f422c28252f5b7533b8e3270 Author: Caolán McNamaraDate: Wed Apr 11 16:14:06 2018 +0100 cairo_surface_create_similar_image is >= cairo 1.12.0 Change-Id: I1805e5680beff6c632016686aa661efe25a8c2f8 diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx index cad5f5ea21a5..7543bc69c760 100644 --- a/vcl/headless/svpgdi.cxx +++ b/vcl/headless/svpgdi.cxx @@ -1320,7 +1320,13 @@ SalBitmap* SvpSalGraphics::getBitmap( long nX, long nY, long nWidth, long nHeigh Color SvpSalGraphics::getPixel( long nX, long nY ) { -cairo_surface_t *target = cairo_surface_create_similar_image(m_pSurface, CAIRO_FORMAT_ARGB32, 1, 1); +#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 12, 0) +cairo_surface_t *target = cairo_surface_create_similar_image(m_pSurface, +#else +cairo_surface_t *target = cairo_image_surface_create( +#endif +CAIRO_FORMAT_ARGB32, 1, 1); + cairo_t* cr = cairo_create(target); cairo_rectangle(cr, 0, 0, 1, 1); @@ -1484,9 +1490,15 @@ cairo_surface_t* SvpSalGraphics::createCairoSurface(const BitmapBuffer *pBuffer) cairo_t* SvpSalGraphics::createTmpCompatibleCairoContext() const { -cairo_surface_t *target = cairo_surface_create_similar_image(m_pSurface, CAIRO_FORMAT_ARGB32, - m_aFrameSize.getX() * m_fScale, - m_aFrameSize.getY() * m_fScale); +#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 12, 0) +cairo_surface_t *target = cairo_surface_create_similar_image(m_pSurface, +#else +cairo_surface_t *target = cairo_image_surface_create( +#endif +CAIRO_FORMAT_ARGB32, +m_aFrameSize.getX() * m_fScale, +m_aFrameSize.getY() * m_fScale); + #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0) cairo_surface_set_device_scale(target, m_fScale, m_fScale); #endif diff --git a/vcl/source/bitmap/BitmapTools.cxx b/vcl/source/bitmap/BitmapTools.cxx index 77583f28e3f9..6d3b0af31015 100644 --- a/vcl/source/bitmap/BitmapTools.cxx +++ b/vcl/source/bitmap/BitmapTools.cxx @@ -235,8 +235,13 @@ BitmapEx* CreateFromCairoSurface(Size aSize, cairo_surface_t * pSurface) { // FIXME: if we could teach VCL/ about cairo handles, life could // be significantly better here perhaps. -cairo_surface_t *pPixels = cairo_surface_create_similar_image(pSurface, CAIRO_FORMAT_ARGB32, - aSize.Width(), aSize.Height()); + +#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 12, 0) +cairo_surface_t *pPixels = cairo_surface_create_similar_image(pSurface, +#else +cairo_surface_t *pPixels = cairo_image_surface_create( +#endif +CAIRO_FORMAT_ARGB32, aSize.Width(), aSize.Height()); cairo_t *pCairo = cairo_create( pPixels ); if( !pPixels || !pCairo || cairo_status(pCairo) != CAIRO_STATUS_SUCCESS ) return nullptr; ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: vcl/headless vcl/source
vcl/headless/svpgdi.cxx| 25 - vcl/source/gdi/pngread.cxx | 10 +- 2 files changed, 25 insertions(+), 10 deletions(-) New commits: commit 25cd843664919974f0d21ca7a0b02cc43e9eeabb Author: Vasily MelenchukDate: Tue Feb 27 19:08:35 2018 +0300 tdf#115297: alternative fix for displaying 1bit images Previous fixes for 1bit monochrome / paletted images produced some regressions, so here is attempt to fix problem at the root. Partially reverted 66dbd4da3afcadb1393daf9be9cecff71b86509a and fixed in a different way without tdf#115297, tdf#114726 and related. Change-Id: I6849ed5ac41770ba905c930065c80e58509dba2e Reviewed-on: https://gerrit.libreoffice.org/50454 Reviewed-by: Thorsten Behrens Tested-by: Thorsten Behrens diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx index a532ce7c2358..bc89f4b84698 100644 --- a/vcl/headless/svpgdi.cxx +++ b/vcl/headless/svpgdi.cxx @@ -1200,10 +1200,33 @@ void SvpSalGraphics::copyBits( const SalTwoRect& rTR, cairo_surface_destroy(pCopy); } +namespace +{ +bool isBlackWhite(const SalBitmap& rBitmap) +{ +const SvpSalBitmap& rSrcBmp = static_cast(rBitmap); +const BitmapBuffer * pSourceBuffer = rSrcBmp.GetBuffer(); +const BitmapPalette & rPalette = pSourceBuffer->maPalette; + +return ( +rPalette.GetEntryCount() < 2 || + +(rPalette.GetEntryCount() == 2 && +rPalette[0] == Color(COL_BLACK) && +rPalette[1] == Color(COL_WHITE) ) || + +(rPalette.GetEntryCount() == 2 && +rPalette[1] == Color(COL_BLACK) && +rPalette[0] == Color(COL_WHITE) ) +); +} +} + void SvpSalGraphics::drawBitmap(const SalTwoRect& rTR, const SalBitmap& rSourceBitmap) { -if (rSourceBitmap.GetBitCount() == 1) +if (rSourceBitmap.GetBitCount() == 1 && isBlackWhite(rSourceBitmap)) { +// This way we draw only monochrome b/w bitmaps MaskHelper aMask(rSourceBitmap); cairo_surface_t* source = aMask.getMask(); copySource(rTR, source); diff --git a/vcl/source/gdi/pngread.cxx b/vcl/source/gdi/pngread.cxx index 7e6674819925..49844f028cd6 100644 --- a/vcl/source/gdi/pngread.cxx +++ b/vcl/source/gdi/pngread.cxx @@ -535,19 +535,11 @@ bool PNGReaderImpl::ImplReadHeader( const Size& rPreviewSizeHint ) { switch ( mnPngDepth ) { -case 1 : -#if defined(UNX) && !defined(MACOSX) -// 1bpp indexed images are so badly mishandled by rest of LO on X11 that we -// don't even bother, and turn them into 8bpp indexed ones with just two palette -// entries instead. -mnTargetDepth = 8; // we have to expand the bitmap -#endif -mbPalette = false; -break; case 2 : mnTargetDepth = 4; // we have to expand the bitmap mbPalette = false; break; +case 1 : case 4 : case 8 : mbPalette = false; ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: vcl/headless vcl/source
vcl/headless/svpgdi.cxx|4 vcl/headless/svpprn.cxx|6 vcl/source/app/IconThemeScanner.cxx|4 vcl/source/bitmap/bitmapscalesuper.cxx |5 vcl/source/control/button.cxx | 10 - vcl/source/control/field.cxx | 12 - vcl/source/control/tabctrl.cxx | 202 ++--- 7 files changed, 108 insertions(+), 135 deletions(-) New commits: commit 85538dd33b227cabb29e9dc630691a7edb6c3920 Author: Julien NabetDate: Sun Jan 28 12:38:27 2018 +0100 Modernize a bit vcl (part1) by using for-range loops + remove useless vars + avoid some iterators calculus by using plain loop Change-Id: I94572bfd56ad9ac76c9899cf68d5ba831009fa7b Reviewed-on: https://gerrit.libreoffice.org/48777 Tested-by: Jenkins Reviewed-by: Julien Nabet diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx index d2970489980b..2c6dd2486ff5 100644 --- a/vcl/headless/svpgdi.cxx +++ b/vcl/headless/svpgdi.cxx @@ -501,9 +501,9 @@ void SvpSalGraphics::clipRegion(cairo_t* cr) } if (!aRectangles.empty()) { -for (RectangleVector::const_iterator aRectIter(aRectangles.begin()); aRectIter != aRectangles.end(); ++aRectIter) +for (auto const& rectangle : aRectangles) { -cairo_rectangle(cr, aRectIter->Left(), aRectIter->Top(), aRectIter->GetWidth(), aRectIter->GetHeight()); +cairo_rectangle(cr, rectangle.Left(), rectangle.Top(), rectangle.GetWidth(), rectangle.GetHeight()); } cairo_clip(cr); } diff --git a/vcl/headless/svpprn.cxx b/vcl/headless/svpprn.cxx index 5e0abfb3df75..a0ec78290429 100644 --- a/vcl/headless/svpprn.cxx +++ b/vcl/headless/svpprn.cxx @@ -214,12 +214,12 @@ void SvpSalInstance::GetPrinterQueueInfo( ImplPrnQueueList* pList ) ::std::vector< OUString > aPrinters; rManager.listPrinters( aPrinters ); -for( ::std::vector< OUString >::iterator it = aPrinters.begin(); it != aPrinters.end(); ++it ) +for (auto const& printer : aPrinters) { -const PrinterInfo& rInfo( rManager.getPrinterInfo( *it ) ); +const PrinterInfo& rInfo( rManager.getPrinterInfo(printer) ); // create new entry SalPrinterQueueInfo* pInfo = new SalPrinterQueueInfo; -pInfo->maPrinterName= *it; +pInfo->maPrinterName= printer; pInfo->maDriver = rInfo.m_aDriverName; pInfo->maLocation = rInfo.m_aLocation; pInfo->maComment= rInfo.m_aComment; diff --git a/vcl/source/app/IconThemeScanner.cxx b/vcl/source/app/IconThemeScanner.cxx index 228c4e00f6cf..846eeaa7c942 100644 --- a/vcl/source/app/IconThemeScanner.cxx +++ b/vcl/source/app/IconThemeScanner.cxx @@ -92,9 +92,9 @@ void IconThemeScanner::ScanDirectoryForIconThemes(const OUString& paths) SAL_WARN("vcl.app", "Could not find any icon themes in the provided directory ('" < ::iterator it; -for (it = maStrips.begin(); it != maStrips.end(); ++it) -mpFn( *(it->mrCtx), it->mnStartY, it->mnEndY ); +for (auto const& strip : maStrips) +mpFn( *(strip.mrCtx), strip.mnStartY, strip.mnEndY ); } }; diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index 949cc65d5a9b..249f8be08aec 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -2169,11 +2169,11 @@ void RadioButton::group(RadioButton ) { std::vector< VclPtr > aOthers(rOther.GetRadioButtonGroup(false)); //make all members of the group share the same button group -for (auto aI = aOthers.begin(), aEnd = aOthers.end(); aI != aEnd; ++aI) +for (auto const& elem : aOthers) { -aFind = std::find(m_xGroup->begin(), m_xGroup->end(), *aI); +aFind = std::find(m_xGroup->begin(), m_xGroup->end(), elem); if (aFind == m_xGroup->end()) -m_xGroup->push_back(*aI); +m_xGroup->push_back(elem); } } @@ -2238,9 +2238,9 @@ void RadioButton::ImplUncheckAllOther()
[Libreoffice-commits] core.git: vcl/headless vcl/source vcl/unx
vcl/headless/svpbmp.cxx| 18 -- vcl/source/gdi/salmisc.cxx | 19 ++- vcl/unx/generic/gdi/salbmp.cxx | 17 - 3 files changed, 50 insertions(+), 4 deletions(-) New commits: commit 237d45700eef31e23e8d10459335501f87540513 Author: Caolán McNamaraDate: Mon May 15 11:17:57 2017 +0100 ofz#1605 check multiply and shift Change-Id: I6aad9ad23e7bf080b3b610223f92df7074530beb Reviewed-on: https://gerrit.libreoffice.org/37632 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara diff --git a/vcl/headless/svpbmp.cxx b/vcl/headless/svpbmp.cxx index 3091dfba888c..5be976fc9e74 100644 --- a/vcl/headless/svpbmp.cxx +++ b/vcl/headless/svpbmp.cxx @@ -27,7 +27,7 @@ #include #include - +#include #include #include @@ -112,7 +112,21 @@ BitmapBuffer* ImplCreateDIB( pDIB->mnFormat |= ScanlineFormat::TopDown; pDIB->mnWidth = rSize.Width(); pDIB->mnHeight = rSize.Height(); -pDIB->mnScanlineSize = AlignedWidth4Bytes( pDIB->mnWidth * nBitCount ); +long nScanlineBase; +bool bFail = o3tl::checked_multiply(pDIB->mnWidth, nBitCount, nScanlineBase); +if (bFail) +{ +SAL_WARN("vcl.gdi", "checked multiply failed"); +delete pDIB; +return nullptr; +} +pDIB->mnScanlineSize = AlignedWidth4Bytes(nScanlineBase); +if (pDIB->mnScanlineSize < nScanlineBase/8) +{ +SAL_WARN("vcl.gdi", "scanline calculation wraparound"); +delete pDIB; +return nullptr; +} pDIB->mnBitCount = nBitCount; if( nColors ) diff --git a/vcl/source/gdi/salmisc.cxx b/vcl/source/gdi/salmisc.cxx index ffde759517fa..4f239efb95c6 100644 --- a/vcl/source/gdi/salmisc.cxx +++ b/vcl/source/gdi/salmisc.cxx @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -328,7 +329,23 @@ BitmapBuffer* StretchAndConvert( pDstBuffer->mnFormat = nDstBitmapFormat; pDstBuffer->mnWidth = rTwoRect.mnDestWidth; pDstBuffer->mnHeight = rTwoRect.mnDestHeight; -pDstBuffer->mnScanlineSize = AlignedWidth4Bytes( pDstBuffer->mnBitCount * pDstBuffer->mnWidth ); +long nScanlineBase; +bool bFail = o3tl::checked_multiply(pDstBuffer->mnBitCount, pDstBuffer->mnWidth, nScanlineBase); +if (bFail) +{ +SAL_WARN("vcl.gdi", "checked multiply failed"); +pDstBuffer->mpBits = nullptr; +delete pDstBuffer; +return nullptr; +} +pDstBuffer->mnScanlineSize = AlignedWidth4Bytes(nScanlineBase); +if (pDstBuffer->mnScanlineSize < nScanlineBase/8) +{ +SAL_WARN("vcl.gdi", "scanline calculation wraparound"); +pDstBuffer->mpBits = nullptr; +delete pDstBuffer; +return nullptr; +} try { pDstBuffer->mpBits = new sal_uInt8[ pDstBuffer->mnScanlineSize * pDstBuffer->mnHeight ]; diff --git a/vcl/unx/generic/gdi/salbmp.cxx b/vcl/unx/generic/gdi/salbmp.cxx index 73fc5a424152..00043d5e783e 100644 --- a/vcl/unx/generic/gdi/salbmp.cxx +++ b/vcl/unx/generic/gdi/salbmp.cxx @@ -41,6 +41,7 @@ #include #include +#include #include #include @@ -193,7 +194,21 @@ BitmapBuffer* X11SalBitmap::ImplCreateDIB( pDIB->mnWidth = rSize.Width(); pDIB->mnHeight = rSize.Height(); -pDIB->mnScanlineSize = AlignedWidth4Bytes( pDIB->mnWidth * nBitCount ); +long nScanlineBase; +bool bFail = o3tl::checked_multiply(pDIB->mnWidth, nBitCount, nScanlineBase); +if (bFail) +{ +SAL_WARN("vcl.gdi", "checked multiply failed"); +delete pDIB; +return nullptr; +} +pDIB->mnScanlineSize = AlignedWidth4Bytes(nScanlineBase); +if (pDIB->mnScanlineSize < nScanlineBase/8) +{ +SAL_WARN("vcl.gdi", "scanline calculation wraparound"); +delete pDIB; +return nullptr; +} pDIB->mnBitCount = nBitCount; if( nColors ) ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: vcl/headless vcl/source
vcl/headless/svpframe.cxx|9 ++--- vcl/source/outdev/outdev.cxx |7 --- 2 files changed, 2 insertions(+), 14 deletions(-) New commits: commit ac0b3b05ab52d0ac06137cf93d71187c7957ec99 Author: Miklos VajnaDate: Thu Jul 14 18:37:04 2016 +0200 vcl headless: ignore visibility in GetClientSize() This fixes the missing-invalidation problem outlined in commit 22023b104cd1e024aecc28a6161bea519a584407 (vcl lok: fix missing paints due to zero-sized windows, 2016-07-12) also in Writer, not only in Impress. Starting text edit, doing a change, and ending text edit now results in the expected invalidations. Ignoring visibility seems to be a better fix for the missing paints. This way the headless case doesn't hit the corner cases of 0x0-sized windows. Also, the gtk vclplug's GetClientSize() only returns 0x0 in case the underlying window is disposed or it's minimized, but it does hand out the size before Show() is called, so now the headless backend is in sync with that. Change-Id: I78698cbfce954c8c593d279ab057a87cfbe87260 Reviewed-on: https://gerrit.libreoffice.org/27224 Reviewed-by: Miklos Vajna Tested-by: Jenkins diff --git a/vcl/headless/svpframe.cxx b/vcl/headless/svpframe.cxx index 7a6add2..7eac6b3 100644 --- a/vcl/headless/svpframe.cxx +++ b/vcl/headless/svpframe.cxx @@ -285,13 +285,8 @@ void SvpSalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, sal_u void SvpSalFrame::GetClientSize( long& rWidth, long& rHeight ) { -if( m_bVisible ) -{ -rWidth = maGeometry.nWidth; -rHeight = maGeometry.nHeight; -} -else -rWidth = rHeight = 0; +rWidth = maGeometry.nWidth; +rHeight = maGeometry.nHeight; } void SvpSalFrame::GetWorkArea( Rectangle& rRect ) diff --git a/vcl/source/outdev/outdev.cxx b/vcl/source/outdev/outdev.cxx index eccf50d..2ea9988 100644 --- a/vcl/source/outdev/outdev.cxx +++ b/vcl/source/outdev/outdev.cxx @@ -66,13 +66,6 @@ OutputDevice::OutputDevice() : mnOutOffY = 0; mnOutWidth = 0; mnOutHeight = 0; -if (comphelper::LibreOfficeKit::isActive()) -{ -// Device size isn't set later in this case, and with zero size, we -// miss paint events. -mnOutWidth = 1; -mnOutHeight = 1; -} mnDPIX = 0; mnDPIY = 0; mnDPIScaleFactor= 1; ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: vcl/headless vcl/source vcl/unx
vcl/headless/svpbmp.cxx|8 +- vcl/source/app/svdata.cxx | 25 ++-- vcl/source/app/svmain.cxx | 15 +++- vcl/source/control/ctrl.cxx|3 vcl/source/edit/textdoc.cxx|2 vcl/source/filter/graphicfilter.cxx|3 vcl/source/filter/ixbm/xbmread.cxx |8 +- vcl/source/filter/ixpm/xpmread.cxx | 21 +- vcl/source/filter/wmf/emfwr.cxx|6 + vcl/source/filter/wmf/wmfwr.cxx|6 + vcl/source/gdi/bitmap3.cxx |9 +- vcl/source/gdi/bitmap4.cxx | 76 +++-- vcl/source/gdi/dibtools.cxx|4 - vcl/source/gdi/gdimtf.cxx | 20 +- vcl/source/gdi/gfxlink.cxx |5 + vcl/source/gdi/metaact.cxx |6 + vcl/source/gdi/pngread.cxx | 10 ++- vcl/source/gdi/regionband.cxx | 10 ++- vcl/source/gdi/salmisc.cxx | 10 ++- vcl/source/gdi/svmconverter.cxx|6 + vcl/source/window/menu.cxx | 24 +-- vcl/source/window/printdlg.cxx | 20 +- vcl/source/window/scrwnd.cxx | 16 ++--- vcl/unx/generic/app/i18n_status.cxx|5 + vcl/unx/generic/app/saldisp.cxx|6 + vcl/unx/generic/app/wmadaptor.cxx | 35 +-- vcl/unx/generic/dtrans/bmp.cxx | 10 ++- vcl/unx/generic/gdi/gdiimpl.cxx| 45 ++ vcl/unx/generic/gdi/salbmp.cxx | 48 +++ vcl/unx/generic/gdi/salgdi.cxx | 29 +++-- vcl/unx/generic/glyphs/freetype_glyphcache.cxx |7 +- vcl/unx/generic/printer/ppdparser.cxx | 12 ++- vcl/unx/generic/printer/printerinfomanager.cxx |3 33 files changed, 381 insertions(+), 132 deletions(-) New commits: commit 84db33a4569c67c0164b85bd218246e1741f6815 Author: Noel GrandinDate: Mon Feb 22 15:38:12 2016 +0200 loplugin:commaoperator in vcl/ Change-Id: Ia5bbce27d9e9526122ce1e27389c7845e6709f27 diff --git a/vcl/headless/svpbmp.cxx b/vcl/headless/svpbmp.cxx index 3f59cdd..68ea2f3 100644 --- a/vcl/headless/svpbmp.cxx +++ b/vcl/headless/svpbmp.cxx @@ -203,7 +203,8 @@ void SvpSalBitmap::Destroy() if (mpDIB) { delete[] mpDIB->mpBits; -delete mpDIB, mpDIB = nullptr; +delete mpDIB; +mpDIB = nullptr; } } @@ -212,7 +213,10 @@ Size SvpSalBitmap::GetSize() const Size aSize; if (mpDIB) -aSize.Width() = mpDIB->mnWidth, aSize.Height() = mpDIB->mnHeight; +{ +aSize.Width() = mpDIB->mnWidth; +aSize.Height() = mpDIB->mnHeight; +} return aSize; } diff --git a/vcl/source/app/svdata.cxx b/vcl/source/app/svdata.cxx index 19c663a..dd34d10 100644 --- a/vcl/source/app/svdata.cxx +++ b/vcl/source/app/svdata.cxx @@ -100,17 +100,32 @@ void ImplDeInitSVData() // delete global instance data if( pSVData->mpSettingsConfigItem ) -delete pSVData->mpSettingsConfigItem, pSVData->mpSettingsConfigItem = nullptr; +{ +delete pSVData->mpSettingsConfigItem; +pSVData->mpSettingsConfigItem = nullptr; +} if( pSVData->mpDockingManager ) -delete pSVData->mpDockingManager, pSVData->mpDockingManager = nullptr; +{ +delete pSVData->mpDockingManager; +pSVData->mpDockingManager = nullptr; +} if( pSVData->maCtrlData.mpFieldUnitStrings ) -delete pSVData->maCtrlData.mpFieldUnitStrings, pSVData->maCtrlData.mpFieldUnitStrings = nullptr; +{ +delete pSVData->maCtrlData.mpFieldUnitStrings; +pSVData->maCtrlData.mpFieldUnitStrings = nullptr; +} if( pSVData->maCtrlData.mpCleanUnitStrings ) -delete pSVData->maCtrlData.mpCleanUnitStrings, pSVData->maCtrlData.mpCleanUnitStrings = nullptr; +{ +delete pSVData->maCtrlData.mpCleanUnitStrings; +pSVData->maCtrlData.mpCleanUnitStrings = nullptr; +} if( pSVData->mpPaperNames ) -delete pSVData->mpPaperNames, pSVData->mpPaperNames = nullptr; +{ +delete pSVData->mpPaperNames; +pSVData->mpPaperNames = nullptr; +} } /// Returns either the application window, or the default GL context window diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx index 1546bc3..5fdd268 100644 --- a/vcl/source/app/svmain.cxx +++ b/vcl/source/app/svmain.cxx @@ -383,10 +383,16 @@ void DeInitVCL() delete pSVData->maGDIData.mpGrfConverter; if( pSVData->mpSettingsConfigItem ) -delete pSVData->mpSettingsConfigItem, pSVData->mpSettingsConfigItem = nullptr; +{ +delete pSVData->mpSettingsConfigItem; +pSVData->mpSettingsConfigItem = nullptr; +}