AgeCommit message (Collapse)AuthorFilesLines
2014-11-24Windows build fix of 'All image cleanup related change'feature/perfwork5László Németh1-1/+1
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
2014-11-22fdo#86573: Impress does not show pictures anymoreZolnai Tamás2-4/+11
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
2014-11-22Skip time based auto swap out for perf testZolnai Tamás1-2/+2
Change-Id: I8bcd51cac4d8d8d6ae26397df5b335c64c9b90e1
2014-11-22Skip size based auto swap out for perf testZolnai Tamás1-0/+1
Change-Id: I6d92bb57822bd7562f35430c7aa8d07481794619
2014-11-22All image cleanup related change in one commit for perf testZolnai Tamás44-672/+142
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/ 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
2014-11-21Use group area listeners when deleting rows.Kohei Yoshida12-28/+124
Change-Id: I9ceb1cabf448349e087e4d5c4c2b1a75af91dd75
2014-11-21Handle group area listeners correctly when deleting cells.Kohei Yoshida3-17/+45
Change-Id: Ic37084ed670f53e0354056f7bef54229971dd7c2
2014-11-20Adjust InsertRow() for group area listeners.Kohei Yoshida7-4/+156
Change-Id: I813b45d015eb1ae8dc7bd1242152ef734b5fe08c
2014-11-20No need to start listening in CalcAfterLoad for xls import.Kohei Yoshida9-16/+21
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
2014-11-19Use group area listener when entering a new single formula cell.Kohei Yoshida3-10/+22
Change-Id: I01dc4537919b69a312e92ede2ae00fbe7d781bd7
2014-11-19Dump formula group listener info.Kohei Yoshida3-6/+41
Change-Id: Idbad1451393c42c272465907312c64c65eba9525
2014-11-18Use group area listeners during ODS import.Kohei Yoshida2-6/+21
Change-Id: Id01f9021dda7f33255f8206174cd730507ab55ad
2014-11-18Use group area listeners when filling down formula cells via fill series.Kohei Yoshida5-23/+184
Change-Id: Ib0d4f542986dc09968cad8b76da9d6e034eddd37
2014-11-18Combine StartAllListeners() and StartNeededListeners()...Kohei Yoshida7-63/+38
And call the new method StartListeners(). This also adjusts what was previously StartAllListener() to be group-listener aware. Change-Id: I74de45c00f5b8ef232eea9fe3b93aa44d1d8855b
2014-11-18Bitmap::Crop test: does it make difference?Matúš Kukan1-1/+1
Change-Id: I001210840d535ac54837fff092c90835f9f2f547
2014-11-18Let's not re-use the same iterator esp when it's still iterating.Kohei Yoshida3-5/+13
Change-Id: I1752857bc036f8d389b4b71d570cf83a76ef29ea
2014-11-18Rename Activate... -> Attach...Kohei Yoshida2-10/+10
Attach is the new one we are going with & offers nice contrast with 'Detach...'. Change-Id: I4578f4c7b9d989e41d433d7c8aa96a9317aa6919
2014-11-18Unnecessary casting.Kohei Yoshida1-1/+1
Change-Id: Id7d9b28921e96842df1e7c0d735dba4d3dbb6156
2014-11-18Related fdo#82953: Forget package URL of image after it is loadedZolnai Tamás5-1/+59
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)
2014-11-18Simplify DeleteCells to not require 2 out parameters for the same thing.Kohei Yoshida5-19/+39
One can easily get constructed from the other after returning from the method. Change-Id: Iafc52efa7714b7cf4d284effda8034cb6f36bf91
2014-11-17Extend the test to cover insertion / deletion of rows.Kohei Yoshida1-0/+39
Change-Id: I9c5f46af446f8384265d91ce5dfe269e7a090d09
2014-11-17Register group area listeners as needed when inserting/deleting cells.Kohei Yoshida5-33/+50
Change-Id: I583ace5d134d526d660d4ff0bbf4a16aa10cbe5a
2014-11-17Unused local variable.Kohei Yoshida1-1/+0
Change-Id: I6a3d191b10eec119eea5af6218e6c298f2826b33
2014-11-17Regroup formula cells in columns before initializing them.Kohei Yoshida1-1/+3
Because the initialization of area listeners now depend on the grouped status of formula cells. Change-Id: Idf61f57387ba62c57d87030c16544bc07836826f
2014-11-17New test for testing group area listener behaviors during formula pasting.Kohei Yoshida2-0/+69
Change-Id: Ie0c4e39e30a33ec5390c03221950d1cd01549c15
2014-11-17Rename these to make it clear that they are only to be called from ...Kohei Yoshida5-9/+9
ScDocument::CopyFromClip. Change-Id: Ia95b65ca7982735b9c217a7b60d194117d64e774
2014-11-17Use group-area listeners during copy & paste if we can.Kohei Yoshida7-28/+113
This should reduce the number of area listeners generated esp. when replicating tons of formula cells down the column. Change-Id: I1ea8f51f667e6b0e1a646f84d79f5e8430b478d5
2014-11-17Avoid unnecessary broadcasting when deleting cells prior to pasting.Kohei Yoshida7-14/+17
Change-Id: Id224fd6fdb804350e7e00634db802e80090ae6d7
2014-11-17Rename methods whose name no longer represent what they do.Kohei Yoshida6-12/+13
We now do all broadcasting at the end of CopyFromClip, and nowhere else during pasting from clip. Change-Id: I1cb2c529f127d6e4080e49e4827f048ce5a19f95
2014-11-17Avoid area listeners and such during formula cell paste replication.Kohei Yoshida3-9/+18
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
2014-11-14Send broadcast range to the area broadcast slot machine.Kohei Yoshida6-14/+178
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
2014-11-14We don't need 2 variants of this method. One is enough.Kohei Yoshida2-100/+1
Change-Id: I001c388669737e9cf1d92f1fbb1e64fb9f4b05c3
2014-11-14Dedicated listener type tailored for formula groups.Kohei Yoshida21-83/+787
Right now, it's only used when loading an xlsx file. But eventually this one should be used everywhere. Change-Id: I216c3a9a33c4b8040e8284d59299e0637471fb50
2014-11-14fix jpeg windows buildMatúš Kukan3-0/+17
Change-Id: I1f760cc68ad6d4972edc156504f63c70b8e7479a
2014-11-14Replace internal jpeg with jpeg-turboMatúš Kukan12-165/+143
Unfortunately requires nasm - the netwide assembler - 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
2014-11-13Reduce duplicate broadcasting done when pasting a range of cells from clip.Kohei Yoshida7-38/+125
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
2014-11-13Differentiate shared and non-shared formula cells when registering.Kohei Yoshida3-5/+40
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
2014-11-12Window build fix of 'make saxfastparser use libmlx2's sax2 interface'László Németh1-1/+1
Change-Id: Ie7240945459e880c4141f58385c51e5ded48e33c
2014-11-12package: Do not bother with deflating big jpeg imagesMatúš Kukan1-2/+12
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
2014-11-12make saxfastparser use libmlx2's sax2 interfaceLuboš Luňák1-136/+54
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
2014-11-12make FastAttributeList's unknown attribute value be passed as OStringLuboš Luňák2-13/+12
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
2014-11-12allow inserting attributes that have zero lengthLuboš Luňák2-3/+7
Otherwise the strlen() might give an incorrect length if the attribute value is just a part of a longer string. Change-Id: I67eb7baecfa928fdee26c5ea9003bd7fc9b96d59
2014-11-12sc: one CPU is parsing, one is populating -> halve the thread count.Michael Meeks1-1/+1
Change-Id: I6ec73098fe5f3e2358185e2f6c65b6deb8533900
2014-11-11Add a means to dump the state of the area broadcaster slot machine.Kohei Yoshida5-1/+78
Change-Id: I158307de667dbe621376dfc01adeef89aa12faaa
2014-11-11Make these non-inline and add the const version of the getter.Kohei Yoshida2-1/+11
Change-Id: I8c175dcaaa51e2b05895226907697b070a2e2f77
2014-11-11Unindent.Kohei Yoshida1-18/+18
Change-Id: I3c644b6ff9916f6ec99ff6208ea073dd1612b4b3
2014-11-11Optimize area broadcast iteration ...Kohei Yoshida2-2/+21
for cases where no areas are marked for removal, which I believe is mor common use case than others. Change-Id: I3f53fb5e6ab4a9172e358bec0c71289d1e92ac19
2014-11-11sc:opencl waste less time measuring CPU performance.Michael Meeks1-8/+11
Change-Id: I7650896e794b9107d2e454e0f694ee6f94b0ed2b
2014-11-10Scope reduction.Kohei Yoshida1-87/+86
Change-Id: Ic0cb74d220dccdcb4f607f4883b9b7fdf86bb080
2014-11-10Move this code to the context class.Kohei Yoshida3-117/+130
Change-Id: I387dba24993d418a2b3923eac992ad2506229704