diff options
author | Tor Lillqvist <tml@collabora.com> | 2019-02-27 14:28:55 +0200 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2019-09-20 11:47:31 +0200 |
commit | 3d7419d01f963bb3ab5633968905a8e2a2e6f2bf (patch) | |
tree | c56fbd5e79d39753560834721c50efd28dbe4036 | |
parent | db8fd12c2b7ab17583e71a2502274ed40861d0ae (diff) |
tdf#122537: Use "best speed" instead of default compression level on iOS
Speed is more important than size in the use case where this showed up
in a profile of the iOS app (inserting an image). This change causes
zlib's deflate_fast() being used instead of its deflate_slow(). For a
specific image I tested with the former takes 1.5 s, the latter 3.4 s.
This is just one aspect of the slowness of image insertio. The
resizing operations mentioned in the bug report is not yet
investigated.
Change-Id: Icf023522b965cb0265000c821a478610d098cd0a
Reviewed-on: https://gerrit.libreoffice.org/68434
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 68c8b98dfb9f3463bdc8f1233fd578e236e4d570)
Reviewed-on: https://gerrit.libreoffice.org/79173
-rw-r--r-- | vcl/source/filter/graphicfilter.cxx | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx index 0fb9b2992899..5da009d46bcf 100644 --- a/vcl/source/filter/graphicfilter.cxx +++ b/vcl/source/filter/graphicfilter.cxx @@ -2513,6 +2513,7 @@ IMPL_LINK( GraphicFilter, FilterCallback, ConvertData&, rData, bool ) sal_uInt16 nFormat = GRFILTER_FORMAT_DONTKNOW; OString aShortName; + css::uno::Sequence< css::beans::PropertyValue > aFilterData; switch( rData.mnFormat ) { case ConvertDataFormat::BMP: aShortName = BMP_SHORTNAME; break; @@ -2540,8 +2541,17 @@ IMPL_LINK( GraphicFilter, FilterCallback, ConvertData&, rData, bool ) else if( !aShortName.isEmpty() ) { // Export +#ifdef IOS + if (aShortName == PNG_SHORTNAME) + { + aFilterData.realloc(aFilterData.getLength() + 1); + aFilterData[aFilterData.getLength() - 1].Name = "Compression"; + // We "know" that this gets passed to zlib's deflateInit2_(). 1 means best speed. + aFilterData[aFilterData.getLength() - 1].Value <<= 1; + } +#endif nFormat = GetExportFormatNumberForShortName( OStringToOUString(aShortName, RTL_TEXTENCODING_UTF8) ); - bRet = ExportGraphic( rData.maGraphic, OUString(), rData.mrStm, nFormat ) == ERRCODE_NONE; + bRet = ExportGraphic( rData.maGraphic, OUString(), rData.mrStm, nFormat, &aFilterData ) == ERRCODE_NONE; } return bRet; |