Commit Graph

417 Commits

Author SHA1 Message Date
a2095b1514 comphelper,vcl: let DeInitVCL() join some AsyncEventNotifier threads
comphelper::AsyncEventNotifier is an amazing class that dispatches
events in separate threads, no doubt implemented during times of
exuberant optimism about the tractability of shared-state
multi-threading.

Unfortunately the authors forgot to think about how all those awesome
threads will be joined, so if they are somehow blocked, then it may well
happen that the events are dispatched when the main thread is already in
DeInitVCL, and the objects required for the dispatching already smell
somewhat funny.

This happens quite reproducibly when changing dbaccess' ModelMethodGuard
to lock the SolarMutex too, then CppunitTest_dbaccess_RowSetClones
crashes in DeInitVCL() because one AsyncEventNotifier thread was blocked
until then by SolarMutexGuard, and this test never Yields once its
document is loaded.

Try to fix this by joining the "DocumentEventNotifier" threads from
DeInitVCL() itself.

Since there's no rtl::WeakReference to go with rtl::Reference, refactor
the AsyncEventNotifier and create a new AsyncEventNotifierAutoJoin
that has to be used with std::shared_ptr and std::weak_ptr.

Change-Id: I50a0749795acb04b0776e543f7125767b697ea35
Reviewed-on: https://gerrit.libreoffice.org/27581
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-07-29 10:05:47 +00:00
508c95f1b6 improve passstuffbyref return analysis
Change-Id: I4258bcc97273d8bb7a8c4879fac02a427f76e18c
Reviewed-on: https://gerrit.libreoffice.org/27317
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-07-27 06:48:25 +00:00
76ad32bec8 add tagging to ThreadTasks so we don't need more one pool
If more than one place in the code submits tasks to the shared
pool, then waitTillDone() becomes unreliable.
Add a tagging mechanism, so different callsites can wait
on different sets of tasks.

Also try to protect our worker threads against exceptions from
the thread tasks code.

Change-Id: Idde664ab50008d31a2dd73910bb22f50e62ae22f
Reviewed-on: https://gerrit.libreoffice.org/27042
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-07-18 06:49:09 +00:00
a291c8fbaa loplugin:passstuffbyref also for {css::uno,rtl}::Reference
Change-Id: I11d6467a35fb9e32cc0608549bd323b1f6683b9f
2016-07-07 18:59:55 +02:00
7855ea4830 remove comphelper::string::remove
and replace it with OUString/OString::replaceAll

Change-Id: I37b1c3b51251dfd9d749d6f1060c75b3a93d7f1a
Reviewed-on: https://gerrit.libreoffice.org/26850
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-07-04 06:49:52 +00:00
cd71034b26 comphelper::OBaseMutex -> cppu::BaseMutex
convert usage of deprecated class, and remove the old class

Change-Id: I19fb9271090d19e5531622b58492e1a848d306e2
Reviewed-on: https://gerrit.libreoffice.org/26843
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-07-04 06:49:07 +00:00
c144288abe loplugin:singlevalfields in comphelper
Change-Id: I22711d226a266dc00c32beff54398a55c4c9691a
Reviewed-on: https://gerrit.libreoffice.org/26599
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2016-06-24 08:41:01 +00:00
ed49818ab0 Clean up OContainerListenerAdapter
* elide OContainerListenerAdapter_BASE
* no need for protected members

Change-Id: I70095dadc4b1f42f04c8ea76b2236bf99a226da9
2016-06-24 10:29:48 +02:00
92712332f3 Restrict tryPropertyValueEnum to enum types
Change-Id: I54a6fdc341185fe4bdb9cc7d1b1a1feb0737bf47
2016-06-20 18:21:27 +02:00
033517b4e6 Remove unused includes
Change-Id: I25bb67449c8c572075d354e62b1c731e95655b4f
2016-06-20 18:18:45 +02:00
50a0473e82 Clean up uses of Any::getValue() in comphelper
Change-Id: I433cca20fb29c6b6ede934edcb2e200f15b060f2
2016-06-20 11:43:37 +02:00
c337011d20 LOK: tile rendering regression fix
Calc fast rendering requires us to offset
the are being rendered and shift all
bitmaps accordingly. This however is
breaking Impress rendering since the
offseting logic is common (in svx and vcl).

This adds new API to enable or disable
this local rendering (as opposed to
rendering a full document as was previously
done.

The new flag is then set by Calc to
enable the offseting logic in isolation
without affecting other applications.

In one case isolation was achieved by
checking the MapModeUnit.

Change-Id: Ia0aadfc3f6df7c1a891b97dc731f5897414c9420
Reviewed-on: https://gerrit.libreoffice.org/26367
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
(cherry picked from commit 60fdcda65bad242f99895cb453182578250fbdea)
Reviewed-on: https://gerrit.libreoffice.org/26378
Tested-by: Jenkins <ci@libreoffice.org>
2016-06-19 16:30:59 +00:00
0d4dcf3800 add comphelper::string::split
Change-Id: Iccc989a786e8e7b8dca1996b635248d7bf7fc5d8
2016-06-18 17:02:08 +02:00
bb1e59d596 Simplify OPropertyContainerHelper::registerPropertyNoMember's _pInitialValue
Change-Id: Ibfb27b3eded45e2646dada37ce3663f427985ae9
2016-06-17 19:40:58 +02:00
5b5706f41f comphelper lok: remove the g_bViewCallback global
Its purpose was to allow incrementally migrate all callers of
SdrModel::libreOfficeKitCallback() to use
SfxViewShell::libreOfficeKitViewCallback() (which allows notifying only
the currently active or all views) instead. That is done by now, so it
can go.

Change-Id: I521bbbe5c638dfd844ebf025153459a37362d3c3
Reviewed-on: https://gerrit.libreoffice.org/26413
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
2016-06-17 12:47:46 +00:00
60e75fb276 tdf#98955 hardware_concurrency not ideal for thread pools
A new static member getPreferredConcurrency added to
comphelper::ThreadPool to return a configurable max
number of threads.

By default the new function returns the hardware_concurrency
value provided by std::thread. When MAX_CONCURRENCY envar is
defined, the return value is limited to whatever is set there.

Three call-sites that used std:🧵:hardware_concurrency
have been replaced with getPreferredConcurrency.

Unittests added to cover the functionality of the new member.

Unittests are capped to 4 threads.

Change-Id: I3332e393a88a5ed436316fa712ed920a4b37f4af
Reviewed-on: https://gerrit.libreoffice.org/26254
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2016-06-15 21:28:47 +00:00
d0bc637426 Normalize on using @throws instead of @raise[s]
...as the former is used almost exclusively

Change-Id: I38ff11cd0d5125534550df99dd427666011c3b7b
2016-06-06 17:07:35 +02:00
0323253a7c remove some manual ref-counting
triggered when I noticed a class doing acquire() in the
constructor and then release() in the destructor.

found mostly by
    git grep -n -B5 -e '->release()'

Change-Id: I96e43a3d30ffd9ae9a34275f24cd914d8f7b026f
Reviewed-on: https://gerrit.libreoffice.org/25806
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-06-06 07:01:34 +00:00
4aee1237a5 Strip also a CR if there (and there seems to be such)
Sad that it took so long for me to notice.

Change-Id: I14b8a61930bb0b2dd1c5e9cce2a6c3e375dcb6ed
2016-06-03 11:00:40 +03:00
2d2971090b tdf#89329: use unique_ptr for pImpl in accimplaccess
Change-Id: Ib10088b5669695dd5e288fe043ad72056a34b1e4
Reviewed-on: https://gerrit.libreoffice.org/25745
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-06-03 06:49:46 +00:00
e88107c055 tdf#89329: use unique_ptr for pImpl in embeddedobjectcontainer
Change-Id: I679555e2eb51e2b9660bb035a08d8da8b1687cab
Reviewed-on: https://gerrit.libreoffice.org/25747
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-06-03 06:16:52 +00:00
7693c22829 tdf#89329: use unique_ptr for pImpl in propertysetinfo
Change-Id: I8df0ed4d7c7df27f570ad09936f17941c30aae91
Reviewed-on: https://gerrit.libreoffice.org/25749
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-06-02 06:40:34 +00:00
c37ce6c3c5 tdf#89329: use unique_ptr for pImpl in propertysethelper
Change-Id: I5891fe7c298b4b3409ac6579ed167a4e0183c89a
Reviewed-on: https://gerrit.libreoffice.org/25748
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-06-02 06:36:30 +00:00
e0f60043cc tdf#89329: use unique_ptr for pImpl in componentmodule
Change-Id: Ida8e271b1dd755289371e457a7c83657b8a84f99
Reviewed-on: https://gerrit.libreoffice.org/25746
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-06-02 06:33:14 +00:00
5d78d488fd Can use boost::make_optional
...reportedly available since Boost 1.34, and configure.ac checks for at least
Boost 1.47.

Change-Id: I07952de220f1eee5f91ad83a1965420eb6b09ada
2016-06-01 17:19:49 +02:00
619a41940f tdf#89329: use unique_ptr for pImpl in accessiblecontexthelper
Change-Id: Ib78ee2f1faa4f9430e08bfbd0cfb0863da7d6dcb
Reviewed-on: https://gerrit.libreoffice.org/25744
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-06-01 09:58:17 +00:00
6cf436799c More comphelper/extract.hxx clean up
Change-Id: I36c1ebea58bcd32b65a48d3447c106aeecdac230
2016-05-31 08:47:05 +02:00
00a45faf5e Fix int2enum
* The data argument to the Any ctor call needs to point at sal_Int32, not int.

* All calls to int2enum guarantee that rType is an enum type, so assert that.

Change-Id: I0ccd498420638fee80aeeccc93d9c1e3309f83b0
2016-05-30 18:31:43 +02:00
74713b34a3 loplugin:unusedmethods
Change-Id: Ib36bc0e87d00abb638cbfec511cd13b6179eabda
Reviewed-on: https://gerrit.libreoffice.org/25431
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-26 07:50:33 +00:00
2af018e4dd Fix typos
Change-Id: I860cc4aa04b4e5cd1437b2f24176ee2ccdec3266
Reviewed-on: https://gerrit.libreoffice.org/25420
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-25 09:50:55 +00:00
95d20a3799 Revert "remove some manual ref-counting"
until I have a better understanding of the UNO reference
counting.

This reverts commit 111de438ea3e512a541281dc0716cc728ea8d152.
2016-05-24 11:02:42 +02:00
111de438ea remove some manual ref-counting
triggered when I noticed a class doing acquire() in the constructor and
then release() in the destructor.

found mostly by
   git grep -n -B5 -e '->release()'

Change-Id: Ie1abeaed75c1f861df185e3bde680272dbadc97f
Reviewed-on: https://gerrit.libreoffice.org/25363
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-24 06:54:06 +00:00
2c8fe2e737 update unusedmethods plugin to deal with constructors
and fix the operator< implementations in some of the other
plugins too.

Change-Id: Ie5631e0cdc8d2a994ad2af2533cdb558a6cfc035
Reviewed-on: https://gerrit.libreoffice.org/25057
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-18 10:03:44 +00:00
98f759bec1 sdext: replace boost::bind
MSVC 2013 with non-debug runtime requires an additional assignment operator
in OUStringBufferAppender.

Change-Id: Ic93fc8d6b1d4760f0eb89e34beb1fcb18e783f73
Reviewed-on: https://gerrit.libreoffice.org/24980
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-05-13 21:22:08 +00:00
3742748699 Fix typos
Change-Id: I1c1894fcf533291b34a662b6efb96dcfa75b92b3
Reviewed-on: https://gerrit.libreoffice.org/24760
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-05-10 19:13:31 +00:00
d916619658 No need to explicitly delete ctor the compiler wouldn't implicitly declare
Change-Id: Idd0e764765bd76e1f6a2d8ec6e18ebac27b91ec6
2016-05-04 14:24:47 +02:00
6e70103da0 While at it, delete Any functions on sal_Bool*
(at least for LIBO_INTERNAL_ONLY), to help further reduce the occurrences of
sal_Bool across the code base

Change-Id: I70654a0cb56655984c717b7b894f26c9ab47536e
2016-05-04 11:59:23 +02:00
12c222a3ae C++11: disable ctors with delete in include/
replace the old declare and don't implement pattern
with C++11 delete keyword
no need to hide this design choice behind access restrictions

Change-Id: I7e8430a07189aa48514a4613c3a8c2950b230f49
Reviewed-on: https://gerrit.libreoffice.org/24495
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-05-03 20:12:22 +00:00
0b1e4a3067 Prevent Any::setValue from reinterpreting bool* as sal_Bool*
...which only happens ot work in environments where sizeof (bool) == 1.  The
simpler alternative is to use the operator <<= template without passing explicit
UNO type information, anyway.

The std::nullptr_t overloads are needed to disambiguate calls with a nullptr
argument.  (Which can at least be meaningful for VOID, but for other types what
it happens to do is store a default value of the given type.)  As std::nullptr_t
is only C++11, this all needs to be LIBO_INTERNAL_ONLY.

Change-Id: Iff06a6ba94250bd4ae4afc937c2a2bfa75f0888f
2016-05-03 15:26:01 +02:00
a05ab9ef5e Remove unnecessary setBOOL, makeBoolAny
Change-Id: Id82c3f352fcc2d4dafad877517098cb6f5d046d4
2016-05-03 11:20:51 +02:00
506c929a0a Fix typos
Change-Id: Ifb7c33d6052efe5ea8a1e0e10b3178073cd29ca0
Reviewed-on: https://gerrit.libreoffice.org/24536
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2016-05-01 09:51:41 +00:00
d3f80583ee -Werror,-Wvarargs
"passing an object that undergoes default argument promotion to 'va_start' has
undefined behavior [-Werror,-Wvarargs]"

just replace the variadic function with one taking an initializer list

Change-Id: Ied3dfe835dcebef48cf35374ec4d8835f98e6779
2016-04-27 13:47:30 +02:00
a82805f8f9 Kill comphelper::MakeMap
Change-Id: I97e9e79ef51e3d78f01b831dd3eee91218058823
Reviewed-on: https://gerrit.libreoffice.org/24344
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2016-04-25 06:11:27 +00:00
2b68383e44 Kill comphelper::MakeSet
Change-Id: I2e5f8c2cd67406d9d275960a37c4aa45e283eec3
Reviewed-on: https://gerrit.libreoffice.org/24343
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2016-04-25 06:11:10 +00:00
68d88e2bda Remove unused comphelper::MakeSequence
Change-Id: I0f34fddbfd709455f1aa2f1bfaa70d72a2752f74
Reviewed-on: https://gerrit.libreoffice.org/24342
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2016-04-24 19:37:29 +00:00
b477a9e0b6 Kill comphelper::MakeVector
Change-Id: I6525f9189b25f007d3ffd190b37c73552a900de2
Reviewed-on: https://gerrit.libreoffice.org/24341
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2016-04-24 19:06:02 +00:00
bbe51f039d Add an interaction handler wrapper for simple file access.
This wrapper is to be used when you want to avoid the error
messages displayed when accessing a file (the messages activated
by ucphelper::cancelCommandExecution), especially when accessing a
Web/DAV connection to enable https certificate validation and
optionally enabling the authentication dialog that may be needed
in these operations.

Change-Id: I19f3072b91b6c4f453a54b56a3d9883b3383dfa5
Reviewed-on: https://gerrit.libreoffice.org/24274
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2016-04-22 07:11:31 +00:00
f555ab4e96 loplugin:salbool: Automatic rewrite of sal_False/True
Change-Id: Idb7e5ff0c73bbc2c462b92cd96444eb5d2d4194b
2016-04-20 17:25:37 +02:00
216ffb038f loplugin:passstuffbyref in comphelper
Change-Id: I502a0ec6627f37e17c4a9adebda58299167a8126
2016-04-13 13:27:51 +02:00
4c7ec9f112 cleanup: remove unused com/sun/star/uno includes
Sequence.h(xx), Any.h(xx) and Type.h(xx)
and remove unused using-declarations from these files.

Add a few missing includes provided by them.

Change-Id: I6b91b6d1fdf9d0496dd546c0aab9bdcc6831a5d4
Reviewed-on: https://gerrit.libreoffice.org/23805
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-04-12 06:38:26 +00:00