vcl/source/treelist/iconview.cxx |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

New commits:
commit 8b705ef10f40c71b693b219c82bef9e7ce767cb2
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sat Jun 3 16:31:24 2023 +0100
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Sat Jun 3 20:23:56 2023 +0200

    perf: use lighter weight png generation for iconview
    
    before:
    
    |--9.50%--JSDialogNotifyIdle::Invoke
    |          |
    |          |--9.33%--JSDialogNotifyIdle::generateWidgetUpdate
    |          |          IconView::DumpAsPropertyTree
    |          |          lcl_DumpEntryAndSiblings (inlined)
    |          |          |
    |          |          |--8.99%--extractPngString (inlined)
    |          |          |          |
    |          |          |          |--8.21%--GraphicConverter::Export
    |          |          |          |          Link<ConvertData&, bool>::Call 
(inlined)
    |          |          |          |          GraphicFilter::FilterCallback
    |          |          |          |          GraphicFilter::ExportGraphic
    
    after:
    
    |--7.50%--JSDialogNotifyIdle::Invoke
    |          JSDialogNotifyIdle::generateWidgetUpdate
    |          IconView::DumpAsPropertyTree
    |          lcl_DumpEntryAndSiblings (inlined)
    |          |
    |          |--7.16%--extractPngString (inlined)
    |          |          |
    |          |          |--6.84%--vcl::pngWrite
    
    Change-Id: Iae34c8bde3e0bbd075252de356f64557fd80c9ad
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152539
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/vcl/source/treelist/iconview.cxx b/vcl/source/treelist/iconview.cxx
index b134991784b2..e658acdade6a 100644
--- a/vcl/source/treelist/iconview.cxx
+++ b/vcl/source/treelist/iconview.cxx
@@ -17,6 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <vcl/filter/PngImageWriter.hxx>
 #include <vcl/toolkit/treelistentry.hxx>
 #include <vcl/toolkit/viewdataentry.hxx>
 #include <iconview.hxx>
@@ -28,6 +29,7 @@
 #include <tools/stream.hxx>
 #include <vcl/cvtgrf.hxx>
 #include <comphelper/base64.hxx>
+#include <comphelper/propertyvalue.hxx>
 
 namespace
 {
@@ -262,7 +264,13 @@ static OString extractPngString(const SvLBoxContextBmp* 
pBmpItem)
 {
     BitmapEx aImage = pBmpItem->GetBitmap1().GetBitmapEx();
     SvMemoryStream aOStm(65535, 65535);
-    if (GraphicConverter::Export(aOStm, aImage, ConvertDataFormat::PNG) == 
ERRCODE_NONE)
+    // Use fastest compression "1"
+    css::uno::Sequence<css::beans::PropertyValue> aFilterData{
+        comphelper::makePropertyValue("Compression", sal_Int32(1)),
+    };
+    vcl::PngImageWriter aPNGWriter(aOStm);
+    aPNGWriter.setParameters(aFilterData);
+    if (aPNGWriter.write(aImage))
     {
         css::uno::Sequence<sal_Int8> aSeq(static_cast<sal_Int8 
const*>(aOStm.GetData()),
                                           aOStm.Tell());

Reply via email to