• Michael Stahl's avatar
    vcl: improve accounting of SVG images in graphics cache · f9028f19
    Michael Stahl yazdı
    The problem is that the graphics cache only counts the size of the SVG
    text, which is stored in SvgData::maSvgDataArray.  However the
    SvgData::maSequence may use a lot more memory, as it may contain
    de-compressed bitmaps that are stored as base64-encoded PNGs in the SVG
    text.
    
    For example icon-themes/galaxy/brand/flat_logo.svg is 812 Ko but contains
    60 Mo of bitmaps.
    
    This may cause excessive memory usage and failure to export documents
    due to OOM; according to valgrind massif, the bitmap buffers use 90% of
    the heap.
    
    Add a new interface com::sun::star::util::XAccounting, and implement
    it in drawinglayer BasePrimitive2D.  VCL SvgData can't access
    drawinglayer via C++ directly so this looks like the best approach.
    
    Change-Id: I5a7c3147733e23473c1decabed24c1f79d951c7d
    Reviewed-on: https://gerrit.libreoffice.org/30669Tested-by: 's avatarJenkins <ci@libreoffice.org>
    Reviewed-by: 's avatarMichael Stahl <mstahl@redhat.com>
    f9028f19
UnoApi_offapi.mk 95.8 KB