Age | Commit message (Collapse) | Author | Files | Lines |
|
Previous failed builds:
8789217 fdo#86573: Impress does not show pictures anymore
f9c52dd Skip time based auto swap out for perf test
f199ea6 Skip size based auto swap out for perf test
17281e8 All image cleanup related change in one commit for perf test
Change-Id: I9d3dd169e979df38c9784888a4f1195f790f30db
|
|
Regression from:
286e2f5c6ec829bc0987b1be7016699f7ef03e5e
Sometimes SdrGrafObj import the image file just as a
preview (with low resolution) and late when the real
picture is needed it just throws this preview and tries
to load the image again.
This preview works only with package URL so in this
case we should not forget that URL.
Plus two other related potential image loss situation:
- SetUserData() is called with empty image URL
- Image preview is thrown when we actually have no
package URL from we can import the image again.
(cherry picked from commit f0b28806eebb1477066d44de49b5d1d61a8e84cf)
Conflicts:
svx/source/svdraw/svdograf.cxx
Change-Id: Ib21f400eb6d28133e8598e6b201209e5dd1a976f
|
|
Change-Id: I8bcd51cac4d8d8d6ae26397df5b335c64c9b90e1
|
|
Change-Id: I6d92bb57822bd7562f35430c7aa8d07481794619
|
|
Change-Id: I5baac12f97ea7fa36293844331ca548b7bc2cdfd
Always call ImplAfterDataChange() when data is changed
Call it inside ImplAssignGraphicData() which assign
GraphicObject members using Graphic's data. With that
ImplAfterDataChange() method also called in constructors.
It's important to call ImplAfterDataChange(), because this
will trigger the auto swaping mechanism.
Change-Id: I45af91f8df2fb5b0143fcc5eb05e82e4d408d0bc
Avoid using null pointer as a special indicator
When ImpGraphic::ImplSwapOut() is called with null
pointer it was assumed that it is becase the graphic is
a link and so we don't need to swap out it actually (we can
load it anytime using the link), only clear the graphic's
internal data.
The problem with that it can happen that ImplSwapOut()
is called with null pointer accidentally on a non-link
graphic object which leads to that we loose the graphic.
Seems more robust to use an explicit indicator
(GRFMGR_AUTOSWAPSTREAM_LINK) for links swapout.
indicator
Change-Id: Icf31524a192c7866278ba6a13eb85648aa69f554
Remove manual SwapOut() call in ODF export
We have a good auto swapout mechanism which will
prevent excessive memory use.
Change-Id: I362f51c724ac31704561abe8b961910f5d490f04
MS export: don't need to manually swapout images after swapin them
We have some good auto mechanisms for that.
Change-Id: I487dbf4a5fc69c7563dfbc5c21f9ebdb05ba6b9e
DOC import: avoid manual swapout call.
No reason to swapout the image directly after the import
because it will be used for rendering just a second later.
Change-Id: I78c8ef9225c55f306182dc5efd7bcaf0e88521c0
Make SetSwapState() an internal method
So we can be sure it is always called when user data changed.
Change-Id: If107907afffb85a7a57817f5807847a5c028416c
Swap in graphic by SwGrfNode and not manually
It's a Writer specific problem, that images lost during export
because of not swapped in graphic data.
Other components (Impress, Calc...) use SdrGrafObj to get the
graphic and SdrGrafObj calls swap in before retrun with the
graphic.
Change-Id: I7398d8e3f6535199b10de048acd58543bdb42531
Avoid an image loss situation of auto swapping
Before an image data is used GraphicObject should be swapped in.
When a GraphicObject is swapped in auto swapping mechanism
is triggered which can swap out some of the images.
We should avoid to swap out the same image on which the swap
in method was called before because the caller code assumes that
the image data is there.
Change-Id: Ia4addc370742aea5fbf185cf87e3c062a5ebf5be
Assign graphic data also during auto swap in
Change-Id: I09b8d11027f4a1e8470b81677388d4a573b372a6
Ignore the swapped in graphic, but use its size
Change-Id: I75f17ab5e55119965fcede2b220979cefc1e26ab
Remove these useless static bool variables.
Change-Id: I7a8ad7814231f129d5d1146ceb36eb2c22b2aff1
More useless static bool variables.
Change-Id: If09aa23768f73bbf659966e4e5aac82dca83d1b6
Paint background images always via drawinglayer
Painting via GraphicObject is obsolete.
See fdo#68927 where the problem was the quality of svg
graphics, it seems a good idea to extend this improvement
to all graphic type.
Change-Id: I57a26d4fcfea8e4f666504a90281365e8a9a7e1d
Remove unused IsInSwap() method
Change-Id: Ib295bd71b5cf16fd75d04818dfd415ff24cb2655
Printing: remove an other manual swap out call
Change-Id: I2b6d6eaa072d9948eb5734e978d68d3bc37701b2
SvxGraphicObject: remove more manual swap out calls
Tested with importing large *.rtf and *.docx test documents
with lots of images -> auto swapp out works.
Change-Id: Ib040edaa89c9bcb966c58b75f0392e6d9f7a165e
SdrUndoDelObj: one more manual swap out call
This thing seems a good optimization to me, but
it would be good to hide all of this swapping thing
inside GraphicObject class, to make our code more
robust (e.g. no image loss because of missing
manual swap in / swap out call).
Auto swapping mechanism will take care of that, anyway.
Change-Id: I933dafd95597ffff038dc6aeb0a64fcaa3941bd8
Remove duplicated swapping methods
Change-Id: I0e61aeb0705ed13872d252ee1594f9ab4aab4f8a
ForceSwap{In,Out}Objects methods are unused now
They are called only by themselves recuirsively,
but not from outside.
Change-Id: I1cde392c95bbc60ac7937d0bf3cd4b0fd062568b
More unused swapping related methods / member of SdrPage
Change-Id: I4a979dd09418df4526409d9026d6abb98c6bf954
Make GetTwipSize() call SwapIn() by itself in case of invalid size
Change-Id: I5bc6cf097e61d65007dde531af4a213b19e8ca5b
More replacements of manual swapping with SwGrfNode::GetGrf()/GetGrfObj()
Change-Id: Ie56584c03af8a6d3ea8f8d4294f5492a841933b7
Be explicit here when to swap out as a link
Change-Id: I70dd00d5f82c5f4f622805e1d6ee1dfc30900b31
Remove unused Graphic member of SwOLENode
Change-Id: Iaff7e86a8e11e9befc6feacdafd3a78a1971bbcd
Swapping Graphic is a privilage of GraphicObject.
This means more things:
* Graphic won't swap out itself, so those classes which uses
Graphic without GraphicObject won't need to deal with swapping.
* When a Graphic is queried from GraphicObject the caller won't
need to deal with swapping, because GraphicObject swaps it in
before return.
* GraphicObject will swap in the Graphic always when a swapping
dependent data is queried (e.g. whole graphic, transformed graphic
or AnimationNotifyHdl)
Change-Id: I2bf6e37291ec94146f10aac4a35084682437ed16
Why to have this compromise, do that what we say the users we do.
Change-Id: Ia599644ff1f7591ac84bdca988883eaf5860297e
Make SwGrfNode swapping methods private
Change the filter test accordingly.
Conflicts:
sw/CppunitTest_sw_globalfilter.mk
sw/qa/extras/globalfilter/globalfilter.cxx
Change-Id: Ide3043f2f245c097a7b4c07ba2e0713510296b3e
Remove some useless swapping call inside SwGrfNode
Change-Id: I4cd2677197c7a6cff71e2966c2b2dd2285032c07
Make SdrGrafObj swapping methods private.
Plus remove some useless call of them.
Change the tests accordingly.
Conflicts:
sc/qa/unit/data/ods/document_with_two_images.ods
sc/qa/unit/subsequent_export-test.cxx
sd/qa/unit/export-tests.cxx
Change-Id: I47a50b5734d799ac02ee7221c95f82415afb9497
Optimize ImplCheckSizeOfSwappedInGraphics() a bit
Store used size as a member so we don't need to recalculate it
all the time and no need to use a size map.
Change-Id: I1f929c5d3a56f545cef123bda087ecaf8ca0be4a
Avoid DelStreamName because it can lead to image loss.
See also:
f811e628411bda29a76ebb1f72eb107ce67d27f0
The problem is that more images can have the same stream name
so we can't decide here when to remove one stream name. Better
to leak in the storage as to loose images (actually we already
leak here, so)
Change-Id: I2c2afe87e024c2521fe22d62126b567931604101
Set back these lines, later it can be useful
Removed in:
9dc3b49c891fb9fe45c24de4b7e1e88fe400afe0
Change-Id: Id8cee4e17d214ca0eaa5cd11dc25849e5f68851e
Logically dead code related to embedded stream name in SwGrfNode\SdrGrafObj
See also:
286e2f5c6ec829bc0987b1be7016699f7ef03e5e
Since embedded URL exists until the first swap in these lines
are not needed anymore.
Change-Id: Ie6bf8efe7808cf42f20f7b4b3f8cb927555c0ea8
Remove now useless setTextEmbeddedGraphicURL()
Since this commit:
286e2f5c6ec829bc0987b1be7016699f7ef03e5e
it's not necessary to update the package URL.
Change-Id: I25c829e9bc0c666838baf19cd60f19938ebb430c
|
|
Change-Id: I9ceb1cabf448349e087e4d5c4c2b1a75af91dd75
|
|
Change-Id: Ic37084ed670f53e0354056f7bef54229971dd7c2
|
|
Change-Id: I813b45d015eb1ae8dc7bd1242152ef734b5fe08c
|
|
We do that prior to it, and in fact, doing it here would unregister all
group area listeners and re-register non-group ones, which is massively
slower with huge documents.
Change-Id: I693f681df05f036eb1aa53554e601066c469f49a
|
|
Change-Id: I01dc4537919b69a312e92ede2ae00fbe7d781bd7
|
|
Change-Id: Idbad1451393c42c272465907312c64c65eba9525
|
|
Change-Id: Id01f9021dda7f33255f8206174cd730507ab55ad
|
|
Change-Id: Ib0d4f542986dc09968cad8b76da9d6e034eddd37
|
|
And call the new method StartListeners(). This also adjusts what was
previously StartAllListener() to be group-listener aware.
Change-Id: I74de45c00f5b8ef232eea9fe3b93aa44d1d8855b
|
|
Change-Id: I001210840d535ac54837fff092c90835f9f2f547
|
|
Change-Id: I1752857bc036f8d389b4b71d570cf83a76ef29ea
|
|
Attach is the new one we are going with & offers nice contrast with
'Detach...'.
Change-Id: I4578f4c7b9d989e41d433d7c8aa96a9317aa6919
|
|
Change-Id: Id7d9b28921e96842df1e7c0d735dba4d3dbb6156
|
|
It causes problems if we handle those imported images differently which
are identified by a package URL, so after the first load remove
this URL and handle images on the same way as inserted images.
Some related bugs:
* #i44367#
* #i124946#
* #i114361#
* fdo#73270
The image in the test document has a special ID which is different
from that one which is generated by LO internally so after ODF export
the new generated image URL is different from the imported one.
Change-Id: I4e7d3490674c5f86bec5c7c6e1c975dcafd7c265
(cherry picked from commit 286e2f5c6ec829bc0987b1be7016699f7ef03e5e)
|
|
One can easily get constructed from the other after returning from the method.
Change-Id: Iafc52efa7714b7cf4d284effda8034cb6f36bf91
|
|
Change-Id: I9c5f46af446f8384265d91ce5dfe269e7a090d09
|
|
Change-Id: I583ace5d134d526d660d4ff0bbf4a16aa10cbe5a
|
|
Change-Id: I6a3d191b10eec119eea5af6218e6c298f2826b33
|
|
Because the initialization of area listeners now depend on the grouped
status of formula cells.
Change-Id: Idf61f57387ba62c57d87030c16544bc07836826f
|
|
Change-Id: Ie0c4e39e30a33ec5390c03221950d1cd01549c15
|
|
ScDocument::CopyFromClip.
Change-Id: Ia95b65ca7982735b9c217a7b60d194117d64e774
|
|
This should reduce the number of area listeners generated esp. when
replicating tons of formula cells down the column.
Change-Id: I1ea8f51f667e6b0e1a646f84d79f5e8430b478d5
|
|
Change-Id: Id224fd6fdb804350e7e00634db802e80090ae6d7
|
|
We now do all broadcasting at the end of CopyFromClip, and nowhere else
during pasting from clip.
Change-Id: I1cb2c529f127d6e4080e49e4827f048ce5a19f95
|
|
All formula cells get marked dirty and start area-listening at the very
end of CopyFromClip. No need to do it in CloneFormulaCells.
Change-Id: I9faf48fd722c2ebcf4b74d5e523317b5d9c71a22
|
|
Rather than iterating through cells in the range and broadcasting by
cells individually. This way we can take advantage of the new group
based area listeners and it's much faster this way.
Change-Id: I8a4b49bce69d89b5b4698790befe4390871c755d
|
|
Change-Id: I001c388669737e9cf1d92f1fbb1e64fb9f4b05c3
|
|
Right now, it's only used when loading an xlsx file. But eventually
this one should be used everywhere.
Change-Id: I216c3a9a33c4b8040e8284d59299e0637471fb50
|
|
Change-Id: I1f760cc68ad6d4972edc156504f63c70b8e7479a
|
|
Unfortunately requires nasm - the netwide assembler - http://www.nasm.us/
Upstream libjpeg-turbo is meant to be built with CMake on Windows but
thanks to our gcc-wrappers we are able to avoid that.
Change-Id: Id87b7072a8acc2578c3abf7e82cb1499e5094dbf
|
|
We do pasting from clip in 2 steps: 1) delete the destination range, then
2) paste the content onto the destination range. The old code would broadcast
both during 1) and 2). This change consolidates them and do broadcasting
only once at the end, and also avoids broadcasting the same cell twice,
which the old code sometimes did.
Change-Id: Ic524c2b70888ce158619d99cbfb55dea85870497
|
|
For now this is just for a pure redirection, but later we'll use this
to do a different area listening registration for grouped formula cells.
Change-Id: I8e68bb53c3e96821175ae562ef36ec5e800c8688
|
|
Change-Id: Ie7240945459e880c4141f58385c51e5ded48e33c
|
|
It takes a lot of time and we can save 1% of size if at all. Rather
store them uncompressed in the zip file.
Maybe we should not deflate jpeg files at all. For some small ones,
about 100KB - 200KB, I've seen 2% savings.
With png, we can save a bit more, although it's still only about 4% - 8%.
Change-Id: I43a3e3812882e4ce85e7af9d0aaab454d98c4860
|
|
This avoids some manual finding of xml information, since e.g. attribute
names come split into prefix and localname, so fastparser doesn't need to do it.
Additionally using sax2 with libxml2 prevents libxml2 from doing quite some
string allocations when parsing attribute values.
Change-Id: I419f86b11ae3ba136bb912842c49d45e6a9beb03
|
|
Since that's how it's internally stored anyway, and I have a use case
where it's useful to limit the length by passing it to OString ctor.
Change-Id: I5903ea4f1b2cdb48c1bbceac6b8e21eb5882d377
|
|
Otherwise the strlen() might give an incorrect length if the attribute
value is just a part of a longer string.
Change-Id: I67eb7baecfa928fdee26c5ea9003bd7fc9b96d59
|
|
Change-Id: I6ec73098fe5f3e2358185e2f6c65b6deb8533900
|
|
Change-Id: I158307de667dbe621376dfc01adeef89aa12faaa
|
|
Change-Id: I8c175dcaaa51e2b05895226907697b070a2e2f77
|
|
Change-Id: I3c644b6ff9916f6ec99ff6208ea073dd1612b4b3
|
|
for cases where no areas are marked for removal, which I believe is mor
common use case than others.
Change-Id: I3f53fb5e6ab4a9172e358bec0c71289d1e92ac19
|
|
Change-Id: I7650896e794b9107d2e454e0f694ee6f94b0ed2b
|
|
Change-Id: Ic0cb74d220dccdcb4f607f4883b9b7fdf86bb080
|
|
Change-Id: I387dba24993d418a2b3923eac992ad2506229704
|