Age | Commit message (Collapse) | Author |
|
Use the OutputDevice::StartTrackingFontMappingUse() and
OutputDevice::FinishTrackingFontMappingUse() functionality that was
added last year.
Add a new LibreOfficeKit document callback:
LOK_CALLBACK_FONTS_MISSING.
"Font" here means just the family name. We dont really know what style
from the family is missing.
Change-Id: Iec4349b5827e7d1dbdde7f8a9f8da92efde429e0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138802
Tested-by: Jenkins
Reviewed-by: Tor Lillqvist <tml@collabora.com>
|
|
SwViewShellImp::AddPendingLOKInvalidation() collects invalidations,
but this was relying on something eventually calling
flushPendingLOKInvalidateTiles(), which wasn't guaranteed.
If e.g. a spellchecker caused an invalidation from in idle callback
and nothing else changed, then the LOK callback handling code
didn't know there was something pending. So add an explicit
call to ensure to notify about these pending invalidations.
Change-Id: I0a9cb0d5aba2fdbbac126cd8a4a3412bef1cab25
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136531
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
...so that its TOOLS_WARN_EXCEPTION can be used in
comphelper/source/misc/logging.cxx in a follow-up commit. (And while at it,
rename from diangose_ex.h to the more appropriate diagnose_ex.hxx. The
comphelper module is sufficiently low-level for this immediate use case, so use
that at least for now; o3tl might be even more suitable but doesn't have a
Library until now. Also, for the immediate use case it would have sufficed to
only break DbgGetCaughtException, exceptionToString, TOOLS_WARN_EXCEPTION,
TOOLS_WARN_EXCEPTION_IF, and TOOLS_INFO_EXCEPTION out of
include/tools/diagnose_ex.h into an additional new
include/comphelper/diagnose_ex.hxx, but its probably easier overall to just move
the complete include file as is.)
Change-Id: I9f3222d4ccf1a9ac29d7eb9ba1530d53e2affaee
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138451
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Always suspicious that some un-expected dialog / state can cause
strange behavior in a client. An initial cut at an API to make it
easier to unwind such problems by exposing the toolkit state.
Change-Id: If8f17943fa4837df4f9ca659a111dcdce5c23244
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137504
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
|
|
Callbacks may be invoked while calling getLOKPayload(), which
would try to lock the mutex again. I actually originally expected
this possibility, as the comment and moving the data to
temporaries in CallbackFlushHandler::enqueueUpdatedTypes()
shows, I just didn't realize the used mutex wasn't recursive
and so would deadlock.
Change-Id: I2b5c4b6b4c1a3933a32ae4641830877e085f2b6c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135499
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
|
|
Change-Id: Ie9c1cd41c5944b901f4ec6c1e4ffd8608c063ffa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135317
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
It's used only for the ConfigurationWrapper singleton, so it's used
only the first time and then ignored. It also causes calls to
comphelper::getProcessComponentContext() for every single invocation
despite the value not being needed, and the calls may not be cheap
(it's ~5% CPU during ODS save because relatively frequent calls
to officecfg::Office::Common::Save::ODF::DefaultVersion::get()).
Change-Id: I02c17a1a9cb498aeef220ddd5a0bde5523cb0ffb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131056
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
273a25c796fca9afa0dfadac57dc3f336831221c changed the handling of LOK
messages to only set up an "updated" flag for types and then
when flushing the value is fetched. This means that queue() is not
called for such updates, and so the timeout to flush the messages
wasn't started.
Change-Id: I3a7324c86a55697f509f80b6c54cb949fb1daa72
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130526
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
We tend to get many of these per keystroke, with the same state.
Change-Id: I9d759f54aee8d6dabcef094997e8f352dd608ec3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128539
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
|
|
See tdf#42949 for motivation
Change-Id: I916f42c46efa1b6cfd7744a189b79659b2867431
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128196
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
|
|
Change-Id: Ida7f6b536f5c07c929ddb21c97be6e9dc4a2b2f2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127080
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
3db1ce30ab235ad22aed71c22e4f6f52b7b88829 added some range checking
on the rectangles, such as making sure (x,y) is not less than (0,0),
and it added it to converting string messages back to rectangles.
But then 3b729db05553c1a6d461fb41c89a05702f407448 avoided
the conversions from string messages back to rectangles, and thus
it avoided also these checks.
Change-Id: I73a08e418dc2e48ef5e89fe1aee0272851f7d363
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126865
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
The LOK_CALLBACK_INVALIDATE_TILES documentation says that
invalidate-all message should say "EMPTY", which wasn't converted
properly from the MaxTwips rectangle representation. Doing that
now needs also changing the testTileInvalidationCompression() test,
but that should be a fix of the test, and conceptually it should
be the same.
Change-Id: I58fcc56ee56d9f6fcdb9298938e8aa7e3609d6db
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126651
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Change-Id: If18268a26118ea587f474c21b7ca0f1fa4622744
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126469
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Change-Id: I36025f17dc6c47710d6cd299f0349b5be227c21d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125760
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I6390d1811bad59c09a074039c635710d25a660d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124886
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Iebeb531fad5cc819b536788925cf8508737198b7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124599
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
setUpdatedTypePerViewId() gets called so often that even unordered_map
lookup and allocations show up in profiling. It seems that flat_map
can do better.
Change-Id: Id2e4f0c40d6973b51e557f84a08bf12feb58b3ce
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124210
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Some LOK messages may get called very often, such as updates about
cursor position. And since only the last one matters, they get
generated every time, which costs some time, and then later except
for one they get all discard again from CallbackFlushHandler queue,
which again costs time.
Change the model to instead only set an 'updated' flag, and
CallbackFlushHandler will request the actual message payload only
before flushing.
This commit changes LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR and
LOK_CALLBACK_INVALIDATE_VIEW_CURSOR to work this way.
Change-Id: I376be63176c0b4b5cb492fbf529c21ed01b35481
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124083
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
It's better to add to the name what the overload does rather than
just have a "mysterious" extra int.
Change-Id: Iff89679c4a978a4596ac662ef74e934cdefefc9e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124001
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Due the to way views are updated on any document change, invalidations
are at least O(n^2), and since LOK may use a number of views and
for each view the entire document is considered to be the view area,
this can lead to a huge number of invalidations that are mostly
the same repeated rectangles.
Change-Id: I63682958d2fc388344641dcd19fa1d2b39054b51
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123617
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
CallbackFlushHandler post-processes LOK messages, but for things
like dropping useless invalidations it needs to know the rectangle
or the view id, and since the only data it gets are string messages,
it needs to convert those back to binary form. Which is slow
with large numbers of messages.
Add internal LOK callback variant that allows also passing
specific data in the original binary form. And then use directly
the binary data in CallbackFlushHandler.
Change-Id: I8dd30d2ff9c09feadebc31a44d8e6a8ccc306504
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123589
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
|
|
Change-Id: Ifd3a1ccef68ebc4cd4e7785357e6a476f6669eb8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123456
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
The normal idle has TaskPriority::POST_PAINT, which means that
if we get too busy, the idle won't be called for a long time,
meaning the queue will get longer and longer, making its processing
slower, and client interactivity will be very poor, with updates
possibly coming only when everything becomes idle.
The second timeout will flush the queue after a reasonable timeout.
I don't think there's an optimal value, so let's choose 100ms for now.
Change-Id: Ia1312a690aefd2c8628c82e0f42b2993802d8b1e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122728
Tested-by: Luboš Luňák <l.lunak@collabora.com>
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
All the lambdas check for event type, so it makes sense to first
separately check the type and only then possibly call the lambda.
Especially since 3b3e4ee97af23f21 separated the types for better
searching.
Change-Id: I144c88f5319ac2141336e1aa3c4ffd7b38265af9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122673
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
we frequently scan the queue to caolesce events.
Most of the time we are scanning based on the event type.
So split the queue data into a compact queue that only contains the
type, and another queue for the rest of the data.
That makes the scanning __much__ more cache-friendly.
Change-Id: I92d0b95611cd139cac8532f9297eaabda71d5fe9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119996
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
(cherry picked from commit acf9cf33d53e4bf598ddbdab102bfbd6bb14f8a3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121558
Tested-by: Jenkins
|
|
Change-Id: I494e64c69decb9fb3d5b13ffc2f18d99f6b7749f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121442
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
(*) tweak buffer in SfxLokHelper::notifyInvalidation to be a bit larger,
so we avoid the cost of a resize©
(*) use our optimised OString concatentation instead of going via
std::stringstream
(*) pass down a pointer to rectangle, instead of a string. later we will
use this to avoid doing the stringify until later
Change-Id: Ia3e3042bc919d9b9cb80e47a93704eb236438605
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119994
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120072
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
because this is often on a hot path, and we can avoid the splitting and
joining of strings like this.
Change-Id: Ia36047209368ca53431178c2e8723a18cfe8260a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119220
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I0bb0ea9d39ed623928060ffd3f2e2bc36ba33209
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117272
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Id3728ac0011d3deed7e56081e3a854c7fa5336f3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113959
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Ia9d04447f927e270a55500e7f35723a729bc01dd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113801
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Change-Id: I835c8fcc237ece5cf9d7a3b261645139d022e9b4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113652
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I60e61133c305673bb305e41957f5414820c7c358
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112790
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Id6dfae9fb97fbe3fc89b9f2e083d7a3d5c1d36d3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112411
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
|
|
By convention, it should be the first include in C/CXX files;
so use of pch should not break that.
Change-Id: Ic329c5f39e8f48ad1778724368e262e48972342b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112123
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: Id892e426343746df2f01f4cdc5f470351bdb6a12
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112099
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
|
|
I just used ./bin/update_pch.sh
Change-Id: I06a7f36eb4c511b8d6c6477fd87e57f0d9702457
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112097
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
|
|
Change-Id: Ide49c48738ecd537d4eb69390d22807561d3b4e1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111828
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I44424081b7f55710c4db7f10d1829de1ae08be76
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111363
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Ic4586057346b6de700c1bb6ff4cd759a11bb3e4d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111231
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Icf55ddda055d11b649e7607c2cdd8b6d6ddfefbc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110483
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I044dd21b63d7eb03224675584fa143009c6b6008
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108418
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I280dea8fe5f346a5555f4bf479896877579d63e5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107748
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
...for LIBO_INTERNAL_ONLY. These had been missed by
1b43cceaea2084a0489db68cd0113508f34b6643 "Make many OUString functions take
std::u16string_view parameters" because they did not match the multi-overload
pattern that was addressed there, but they nevertheless benefit from being
changed just as well (witness e.g. the various resulting changes from copy() to
subView()).
This showed a conversion from OStringChar to std::string_view to be missing
(while the corresponding conversion form OUStringChar to std::u16string_view was
already present).
The improvement to loplugin:stringadd became necessary to fix
> [CPT] compilerplugins/clang/test/stringadd.cxx
> error: 'error' diagnostics expected but not seen:
> File ~/lo/core/compilerplugins/clang/test/stringadd.cxx Line 43 (directive at ~/lo/core/compilerplugins/clang/test/stringadd.cxx:42): simplify by merging with the preceding assignment [loplugin:stringadd]
> File ~/lo/core/compilerplugins/clang/test/stringadd.cxx Line 61 (directive at ~/lo/core/compilerplugins/clang/test/stringadd.cxx:60): simplify by merging with the preceding assignment [loplugin:stringadd]
> 2 errors generated.
Change-Id: Ie40de0616a66e60e289c1af0ca60aed6f9ecc279
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107602
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I3e22c2000da03f6f3345353846213203993aa865
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107192
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Instead of using the current view to set
the DocId, we instead make sure that the ShellView
object has the DocId set at construction time.
This turned out to be necessary in at least one
case (which has a unit-test that failed), which
is when events fired during the creation of a
new view. The cursor position is notified
before we have a chance to set the DocId and
because of that we miss the notifications (or
worse, we end up sending them to all other
documents' views in an effort to fix this bug).
This approach is clean and always guarantees that
all views have the correct DocId set as soon as
possible and that all notifications are sent
as expected.
A unit-test is added to exercise mult-document
usage, which exposed a number of bugs and issues
that have been addressed in this patch.
Change-Id: Icf5145fb1dabd0d029368310c2b9bf73ae927ccc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99975
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Reviewed-by: Ashod Nakashian <ash@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106252
Tested-by: Jenkins
Reviewed-by: Tor Lillqvist <tml@collabora.com>
|
|
Change-Id: I39856d77a2ef506612b68fccfd0ba9c9d6b1debc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105661
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
|
|
Change-Id: I41a204fbc5e2c9b819fb948c5288f8d7b4195489
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103117
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
This commit was carried out by a Python script, source of which
is at https://bugs.documentfoundation.org/show_bug.cgi?id=124176#c97.
Change-Id: I26f01467d2a572a51c7ace76628d4a8f96f249a4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102553
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
|