Age | Commit message (Collapse) | Author |
|
Change-Id: I0462cedcfb976d3df53a4aca2ef2b6abdc69ccd5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92130
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Id12fc3f5c55d7ed027f11645bb17233d2da9e268
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92129
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
This speeds up the loading of the bugdoc:
- old cost: 6378 ms
- new cost: 1891 ms (30% of baseline)
Images were initially loaded at import time, but commit
acb803b730f2c6bd82e39beab58949ec14f85eb0 (tdf#125591 DOC import:
lazy-load metafiles with explicit size, 2019-06-11) changed this, so
that they are lazy-loaded. That improved performance, but sometimes gave
incorrect results.
Then commit d8371cdfd092c6426c01aae130ea4eaa6d627a6f (tdf#127446 vcl
image lazy-load: fix custom size handling of metafiles, 2019-09-30)
fixed the correctness problem, but the loading was no longer lazy in the
tdf#131496 case.
This is an attempt to bring back lazy-loading for vector-based images,
while maintaining the correct preferred size.
The problem was that the PPT import triggered a vector -> bitmap
conversion during load:
#0 0x00007ffff03c7e36 in ImpGraphic::loadPrepared() (this=this@entry=0x1f88a90) at vcl/source/gdi/impgraph.cxx:1424
#1 0x00007ffff03c72c7 in ImpGraphic::ImplSwapIn() (this=0x1f88a90) at vcl/source/gdi/impgraph.cxx:1444
#2 0x00007ffff03c7535 in ImpGraphic::ensureAvailable() const (this=this@entry=0x1f88a90) at vcl/source/gdi/impgraph.cxx:1402
#3 0x00007ffff03c9481 in ImpGraphic::ImplExportNative(SvStream&) const (this=0x1f88a90, rOStm=...) at vcl/source/gdi/impgraph.cxx:1590
#4 0x00007ffff03bf9a8 in Graphic::ExportNative(SvStream&) const (this=this@entry=0x20534e0, rOStream=...) at vcl/source/gdi/graph.cxx:544
#5 0x00007ffff1c79a28 in svt::EmbeddedObjectRef::SetGraphicToContainer(Graphic const&, comphelper::EmbeddedObjectContainer&, rtl::OUString const&, rtl::OUString const&)
(rGraphic=..., aContainer=..., aName="Object 1", aMediaType="") at svtools/source/misc/embedhlp.cxx:773
#6 0x00007ffff1c79b6f in svt::EmbeddedObjectRef::AssignToContainer(comphelper::EmbeddedObjectContainer*, rtl::OUString const&)
(this=0x207ae90, pContainer=pContainer@entry=0x1f8de40, rPersistName=...) at svtools/source/misc/embedhlp.cxx:369
#7 0x00007ffff239f736 in SdrOle2Obj::Connect_Impl() (this=this@entry=0x20734f0) at svx/source/svdraw/svdoole2.cxx:984
#8 0x00007ffff23a6310 in SdrOle2Obj::Init() (this=this@entry=0x20734f0) at svx/source/svdraw/svdoole2.cxx:695
Try to defer that conversion by not doing a
maVectorGraphicData->getReplacement() in ImpGraphic::ImplSetPrefSize(),
rather just store the preferred size and apply it later when
getReplacement() is called.
This helps, because the above OLE-from-PPT case loads the graphic, but
only to export it as SVM, so it doesn't need a vector -> bitmap
conversion otherwise.
Change-Id: I24790c0a3e298d5fbb3faff35d529e79cc72845a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92144
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
|
|
in SkiaCompatibleDC::getImageAsDiff
when loading the larger example file.
We hit the abort because we have a rectangle here
with width and height -2.
Not sure where that is coming from, because the crash
doesn't happen in debug build, only optimised.
Change-Id: I448b418dee26536d361e82e4d649be447ba43725
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92127
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
since we put it into the config_options.h header
Change-Id: I72320762f8f7b671d69675b8afb17b7bfa2e706d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92089
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
There is no need to hide std::shared_ptr<VectorGraphicData> type
under an alias name. It doesn't make the code more understandble
and it usually is the exact opposite because we know with what
type we are dealing with.
Change-Id: Iec80ee99697ff2fe3a8275fc2787b5370510ebe6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92069
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: Ibfec031daaa3b92d2286113c3ef981cfa6d09f05
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92072
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I5e4ef6aadd25697beb0d3289ee22cef1e5ac433b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92071
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
To make the code easier to read.
Change-Id: Iebc648150391939fba5d1cd815c72dbcf02ceec6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90378
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I83e3f0a75369739579b95471cfea90569bebf4ad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91813
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
|
|
Change-Id: Ib81a7d1c3330eced1680ba0966e49dbe063fb116
|
|
The errors are from DirectWrite not available, but I guess may happen
in some setups? But no point in spamming warnings either way.
Change-Id: Ic25ddcad474ccf007925ebf7afcd784da19f4b92
|
|
Apparently it's hard for users to find out the actual Vulkan driver
version (as compared to the marketing version), which is needed
for blacklisting. And raster performance is noticeably better
if Skia is compiled using Clang. So just dump the info to
<cachedir>/skia.log (where on Windows the <cachedir> should be
AppData\Roaming\LibreOffice\4\cache).
Change-Id: Iafbc32637579b831275c60554f064479a326b917
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91980
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Change-Id: I330f8393edf61b37ae12a372e6f43ff01e204395
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92047
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Change-Id: Ibfb6206751126def10905bb22effbe1a947cd6d6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91968
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Change-Id: I8660db3d5eddb1596529783e13dff130bb3d0858
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91999
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Ideee16b57548df5f6fd1561d68729968edc42e76
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91989
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I483db377b10df0a8ced20901fde5286576ef6986
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91988
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
which doesn't matter for damage calculations, halves the time in
processPolygonStrokePrimitive2D
Change-Id: I0e3d37e77e7760d484b961de8bef22cc5ba1e09a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91957
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
which shaves 5% off the rendering time
Change-Id: Iab2a92088c5d1e8840a53ff57ab1a95ba5ec8e0a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91947
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Comparing with the windows impl. it seems that it is possible to get
timeout / idle starvation, and we need to poll and be responsive on
our sockets even in this this case.
As such, ensure we end up in the Kit poll callback, even when we have
very short timeouts / busy-idle loops.
Change-Id: I4bcac46af931de52a675f66fd189cd0ee14a0859
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91893
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
|
|
Should be an almost pure re-factor, that may save a few ms
in some cases.
Change-Id: Ie9c9e1a3610e1bcc8c12941f230109dd8eb77404
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91892
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
|
|
<http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf> "CIPA DC- 008-Translation-
2012: Exchangeable image file format for digital still cameras: Exif Version 2.3"
documents that the Orientation tag 0x0112 expects a count of 1 values of type SHORT
(16 bit), and details that values <= 4 bytes are stored in the Value Offset field
always using bytes starting from the left of the field.
This is a regression introduced with 42c0e433aca68c669bc0f55af404b6bae1655fba "Avoid
-fsanitize=misaligned-pointer-use". That commit had wondered why the original code
had used OSL_SWAPWORD instead of OSL_SWAPDWORD when reading and writing such
orientation values. It turns out that that original code had happened to work
correctly when processing either little or big endian data on a little endian
machine. (Though it would have worked incorrectly when processing either little or
big endian data on a big endian machine.) And with
42c0e433aca68c669bc0f55af404b6bae1655fba, the code worked when processing little
endian data on a little endian machine, but failed when processing big endian data
on a little endian machine, as is the case for tdf#131669 on e.g. x86_64.
(read32 has become unused and is thus removed.)
Change-Id: I7992629048ac44c00ee703c75164f3d094773244
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91881
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
CopyBits() wasn't reporting 'src' if it was different from 'this'.
Put the 'O' for offscreen after 'G' or 'R', so that it doesn't look
like 0 being part of the size.
Add pointer value to the Idle instances debug name.
Change-Id: I001f4265696ff2b15e0273b3ae0c3857b39e2a0a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91835
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
I came across this when seeing UITest_calc_tests2's
tdf118189.tdf118189.test_tdf118189 fail on Linux with SAL_USE_VCLPLUGIN=gen and
also on Windows, see the mailing list thread starting at
<https://lists.freedesktop.org/archives/libreoffice/2020-April/084822.html>
"Linux SAL_USE_VCLPLUGIN=svp and the clipboard". That email thread clarified
that the codified behavior of that non-LOK test was wrong. (While the LOK test
ScTiledRenderingTest::testMultiViewCopyPaste in
sc/qa/unit/tiledrendering/tiledrendering.cxx keeps working as intended.)
I did not find documentation for what arguments CreateClipboard shall support,
but things seem to work if anything but empty arguments is rejected with an
IllegalArgumentException.
Change-Id: I1918254cc15878ad43b8aa22aff7eb1c4bea73fe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91869
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: Idd29bd22e86ebec243bb6d9a89f0230d034892f8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91871
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I5996c2cb9470de251d9bc8638c9ab7917e533f7b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91853
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Iad407c85f83cde84f713bffca735868b3e2a7307
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91852
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
|
|
so it can be made italic for the font name combobox
Change-Id: I35e819b1401d2ebbaa1e9ce8e2ce9e031662c999
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91840
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I211cd6bc2249475dbacd80f944e22465b19aff77
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91829
Tested-by: Jenkins
Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com>
|
|
Change-Id: I8806e5ac0f086c0356ae87bcc3020a3dc6d45e54
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91814
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
E.g. with Skia enabled (thus blocking OpenGL) the zombie stays around.
Change-Id: I9769ec804e4727189bbfe58d415e8ad3a6b234ed
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91811
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
return of false means we didn't change page for some reason, the idea is
that it might be blocked to go to another page, in which case sync with
what page we ended up on, but don't bother with that if the dest page
would be the same as the current page
Change-Id: I280128240601413fb6d027d001b2ecc9a4efa76f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91809
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
SkSurface::draw() can avoid copies if it detects the source and
destination are the same surface. This can especially make
a difference on Windows with raster, because RasterWindowContext_win
shares the surface's pixel data with BITMAPINFO, which resets
SkSurface's fWeOwnThePixels, making even makeImageSnapshot()
do copies.
Can be seen in the profile e.g. for tdf#131408.
Change-Id: I08d08974c4725824e05c5644549b920f69b9ce64
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91773
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
AlphaMask doesn't need any conversion to gray, it's just enough
to make sure the alpha channel bitmap is 8bpp. And the conversion
is needed for the separate-OutputDevice-alpha hacks, where
GetBitmap() gives non-8bpp bitmap for the alpha contents, but there
all the R,G,B channels are the same, so just take red and avoid
pointless conversion.
Change-Id: Ib30fc8fa6d05067d582402ab2c0fcfb49a3742f2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91772
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
This is again used by the ugly separate-alpha-outdev hack. So try
to avoid pixel operations.
Change-Id: I2956f03272b58831493b1eb4901a8ab5a3e587be
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91771
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Normally VCL can handle the pixel buffer operations, but this is often
called by the separate-alpha-outdev hack, where we get only the SkImage.
So optimize to avoid the SkImage->buffer->SkImage conversion.
Change-Id: I9d2c11d102adc89aac41ff55f11553dbcee9cd97
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91770
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
SkImage::MakeFromBitmap() shares the pixels instead of copying,
so in raster mode this saves some work.
Change-Id: I89aa86c269c4b4f24e305dec390ae0f80e2537da
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91769
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Skia has an optimized function for RGB->RGBA conversion that
we are going to do often because 24bpp is the most common LO
image format. The function is private, so patch that.
Also optimize 32bpp->8bpp conversion with gray palette.
Change-Id: I48b06f80d5ca9e1c8e3ee51da61e87541bd83d5a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91768
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
This allows doing the scaling at least in some cases on the GPU.
Pending scaling is detected by mSize (logical size) != mPixelSize
(actual size of pixel data).
Change-Id: I8adef13750c195fdbe48c9167737a0c31cda66d5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91767
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Latin text goes from l->r, then t->b. If we rotate to the right, then we
get t->b, then r->l. Vertical text in vcl's Font means the individual
glyphs are painted in a way that looks "non-rotated" in the tbrl case.
btlr is not symmetric to this: if you rotate to the left, then Latin and
vertical text is handled the same way, i.e. there is no compensation at
a glyph level.
This means that as far as vcl is concerned, the Font's vertical flag has
to be true in the tbrl case, but no in the btlr one. Fix
SwFont::SetVertical() to do this, which means that rotating at a
character level or using the btlr text direction will result in the same
rendering for a one-liner text.
Regression from commit 89e5b431d468745da3a1eff14d48296107b9101b (sw btlr
writing mode: implement DOC filter, 2019-03-28).
Change-Id: I2619c77a3b2597dbf9feab6c7042e8d8c7454197
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91780
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
|
|
Change-Id: I80d3f5896f4e3b985ab1563a0a8306e5ff7183ce
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91337
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Idce9955294372817c0dd1f40ebd38f16fc90eab5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91007
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I350cbdf753f3d6f61623e384c4446c9c6890f041
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91745
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
instead of the bottom
Change-Id: I5e3dcbb72d23ddb322347efe596902c7d6efc44c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91751
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Id9b70b247351a5c12b6540c828e2c34f9fb31c11
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91750
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I99cf1f42c89ee6d9e17ac1a24ae8e58e6e47a55d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91727
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Ia085242dee0aaa19f9aefa2a3cf71bc827fcca73
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91658
Tested-by: Jenkins
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I31d0b0af25fb6062b518f4c1ace25715a784ad81
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91657
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Performance increase from ~3100ms to ~1400ms on 4c/8t CPU.
Change-Id: Ic057c3fafc3cf6f0f90430ca431db569be08a133
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91684
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|