Commit Graph

1095 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
6e72f0251b new loplugin unnecessary override
Change-Id: I88d3e33823d68745b98625050a8a274f9ef04bcb
Reviewed-on: https://gerrit.libreoffice.org/27135
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2016-07-15 14:05:41 +00:00
38ae35db26 tdf#84635 - Slow layout of large tables
Based on suggestion from Aron Budea.
And do something similar to most other places keeping vectors
of weak references where the code looks like it will hold more than
a few entries.

Measurements:
the 26 page file file takes
    51s without my path
    15s with this patch
the 69 page file file takes
    5m28 without my path
    51s with this patch
the 84 page file file takes
    8m28 without my path
    58s with this patch

Change-Id: I8da94c525fc73ebd969e0343c6f074be4f0063b1
Reviewed-on: https://gerrit.libreoffice.org/27093
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-07-13 13:08:16 +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
10aaf33986 convert some manual ref-counting in dbaccess
Change-Id: I2df7b6b79bff4a5c7358288518c5518b6a7032bf
Reviewed-on: https://gerrit.libreoffice.org/26051
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-06-09 06:43:57 +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
0b23eec200 teach refcounting clang plugin about uno::Reference
uno::Reference is only allowed to used with classes that have a
::static_type member.
So convert all those places to rtl::Reference.

Maybe we need some LIBO_INTERNAL_ONLY constructors on rtl::Reference and
uno::Reference to make this a little smoother?

Change-Id: Icdcb35d71ca40a87b1dc474096776412adbfc7e3
Reviewed-on: https://gerrit.libreoffice.org/25516
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-31 06:25:45 +00:00
a9ff36a1e9 Fix typos
Change-Id: If7262e114b5b4cd40e9c0a8929940199ea747595
Reviewed-on: https://gerrit.libreoffice.org/25025
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@documentfoundation.org>
2016-05-16 06:18:47 +00:00
c567c0cf44 dbaccess: replace boost::bind with C++11 lambdas
Change-Id: I468f9c7af9c8c8189c51790e0301dd8c60a9f83c
2016-05-12 11:08:25 +02:00
a5810faae3 clang-tidy modernize-loop-convert in d*
Change-Id: I0830a41b48e884ef63d32b5873c7007195659bb9
2016-04-25 11:57:07 +02:00
b2e86d2e26 Fix typos
Change-Id: Iea11112a1bf1ff934de0e355b9e81979aa1966a3
Reviewed-on: https://gerrit.libreoffice.org/24286
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@documentfoundation.org>
2016-04-22 06:47:06 +00:00
6009d33823 loplugin:salbool: Automatic rewrite of sal_False/True
Change-Id: I5cd8fd979fd4caa3d7cde599096627bfdd0dec7e
2016-04-20 17:25:39 +02:00
991e3cefad Avoid reserved identifiers
Change-Id: I2b0fe700057fea790e8b5d651770b27f0a553fbf
2016-04-18 15:30:05 +02:00
789055bc2a clang-tidy performance-unnecessary-copy-initialization
probably not much performance benefit, but it sure is good at
identifying leftover intermediate variables from previous
refactorings.

Change-Id: I3ce16fe496ac2733c1cb0a35f74c0fc9193cc657
Reviewed-on: https://gerrit.libreoffice.org/24026
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2016-04-18 07:37:31 +00:00
150ac9cf05 clean-up: unused using declarations and includes
Searched source for using declarations.
Checked if those symbols reappear in the source file,
even in comments or dead code but not in #include statements.
If they don't reappear, remove the declaration.
Remove includes whose symbol got removed.

Change-Id: Ibb77163f63c1120070e9518e3dc0a78c6c59fab0
Reviewed-on: https://gerrit.libreoffice.org/24148
Reviewed-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2016-04-18 07:25:24 +00:00
9fce680e27 loplugin:passstuffbyref in dbaccess
Change-Id: Ice52ebbfeca45c8587fdcd0d3dea5c02c7de27e3
2016-04-13 13:27:51 +02:00
dbd1f4b75a clang-tidy performance-unnecessary-value-param in dbaccess
Change-Id: I9cec61867b4e6e8abde7749047974c6de87b9669
2016-04-12 11:25:18 +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
922ee9a9da tdf#94306 replace boost::noncopyable in d...
dbaccess, desktop and drawinglayer.

Replace with C++11 delete copy-constructur
and copy-assignment.
Nothing special, only one unused include in
dbaccess/source/filter/xml/xmlfilter.cxx.

Change-Id: Iebabbc658215162450d4caf08d4fb2f116c456d9
Reviewed-on: https://gerrit.libreoffice.org/23918
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: David Tardon <dtardon@redhat.com>
2016-04-08 17:42:57 +00:00
f7a75a66fa cleanup: remove unused Reference.h(xx) includes
and unused using-declarations from Reference.h

Change-Id: I297a7ae6044fa329d245ecf08fd5c4cb930f5b19
Reviewed-on: https://gerrit.libreoffice.org/23735
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2016-04-02 19:01:24 +00:00
9e596250a6 tdf#97966 Drop 'static' keywords
Including no keywords from extern "C" blocks

Change-Id: Icff7c0308843d6a7608be24d7fcf11fa079c7b72
Reviewed-on: https://gerrit.libreoffice.org/23672
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2016-04-01 06:44:34 +00:00
1aa4df615f use SAL_N_ELEMENTS in for loops
for with
  git grep -n 'for.*sizeof'

Change-Id: I6211024385e03ac5eeeb38690d2c1c699e015c2f
Reviewed-on: https://gerrit.libreoffice.org/23569
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-03-31 08:00:13 +00:00
2b60e64c18 Use const_iterator when possible (whole dbaccess)
Change-Id: I3d10a7914353b384fc7a2195a70398869f675211
Reviewed-on: https://gerrit.libreoffice.org/23570
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2016-03-28 18:39:16 +00:00
018c6adf85 tdf#97966: Remove 'static' keywords
Change-Id: I0d9837a7ccecd606e0d43b53f8b920547b0d0bcd
Reviewed-on: https://gerrit.libreoffice.org/23132
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2016-03-11 08:56:20 +00:00
1b1080fe8a loplugin:constantparam in dbaccess
Change-Id: I44b5a586a1b0da47e032dff097ebf545f5fe76fc
2016-03-09 10:07:47 +02:00
576ab77255 tdf#91794 Remove OSL_DEBUG_LEVEL > 1 conditionals
I either replaced OSL_DEBUG_LEVEL > 1 with OSL_DEBUG_LEVEL > 0
statements or i used SAL_INFO(..)s

Change-Id: Iefb6b83e86e1767e55600b6e1989ee91207fb220
Reviewed-on: https://gerrit.libreoffice.org/23000
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@documentfoundation.org>
2016-03-08 13:31:09 +00:00
e13ba2d41d loplugin:unuseddefaultparams in dbaccess
Change-Id: I5f417aea43b4aa841ee45e947b982e6341c7b18b
2016-03-03 08:11:02 +02:00
bf7690bc1b convert EComposeRule to scoped enum
Change-Id: I5a2e4f6f6f0f353c75dff85e865608b12c2104f9
2016-02-25 13:50:25 +02:00
c45d3badc9 new loplugin: commaoperator
Change-Id: I03f24e61f696b7619855e3c7010aa0d874e5a4ff
2016-02-23 08:08:56 +02:00
6e2de428a4 tdf#57950 Replace chained O(U)StringBuffer::append() with operator+
Change-Id: I2576c997d5b82fd8bdfd0c9430c7a1e11d7e07df
Signed-off-by: melikeyurtoglu <aysemelikeyurtoglu@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/22049
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Michael Stahl <mstahl@redhat.com>
2016-02-18 21:37:07 +00:00
a238b1f8d3 Remove excess newlines
A ridiculously fast way of doing this is:

for i in $(pcregrep -l -M -r --include='.*[hc]xx$' \
  --exclude-dir=workdir --exclude-dir=instdir '^
{3,}' .)
do
    perl -0777 -i -pe 's/^
{3,}/

/gm' $i
done

Change-Id: Iebb93eccbee9e4fc5c4380474ba595858a27ac2c
Reviewed-on: https://gerrit.libreoffice.org/22224
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
2016-02-09 08:18:05 +00:00
752cd07d08 InterfaceContainer2 with vector instead of Sequence
create an InterfaceContainer2 class to replace InterfaceContainer.
It uses a std::vector instead of a Sequence for the mutable listener
list, which provides far better performance.

Switch all our internal use-sites to the new class.

Change-Id: I6b56cfa511ded2395faa22e68fab3b2f16c3cb88
2016-01-25 08:52:03 +02:00
38c23520d4 loplugin:unusedmethods unused return value in include/sfx2
Change-Id: Id4017bdfe18f8224d28a9f787865c7a880aeeed8
2016-01-13 08:44:45 +02:00
f7c23897a3 loplugin:unusedmethods unused return value in dbaccess
Change-Id: Ia7ec0209a635f8482b6ccbaa7ba48a8c6da79090
2016-01-11 10:49:24 +02:00
64d624b651 Fix typos
Change-Id: I9a5940027423ff0791fa7da0b79b617412ce6b86
Reviewed-on: https://gerrit.libreoffice.org/21209
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2016-01-10 14:17:20 +00:00
f61d3bc92c cppcheck: noExplicitConstructor
Change-Id: Ic6407a57440fbd887f9ec9d5963e5748aa89a29e
2016-01-02 20:24:38 +00:00
22328a224d New saving behavior
Changes in this commit:

- AlwaysAllowSave config is gone. Saving is always permitted, unless in
  a read only document. Also changed the behavior in dbaccess to match
  sfx2.

- The toolbar save button is always enabled, to always give access to
  the dropdown. That's the case even in a read only document, except
  that it changes to DROPDOWNONLY, and the save as command icon+tooltip.
  In table/query designers we still disable the button in read only state.

- When the document is modified, the toolbar button gets a special icon
  to indicate that.

TODO:

- Icons for the document modified state are still missing. I added some
  fake links to Tango's links.txt in order to test the new behavior.
  These links shouldn't stay as-is in a production version!

Change-Id: I56c169bf48b78faaf53c2989ce8624f8297ffb6e
Reviewed-on: https://gerrit.libreoffice.org/20839
Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
Tested-by: Maxim Monastirsky <momonasmon@gmail.com>
2015-12-23 09:38:25 +00:00
e0075eb0c0 dbaccess: module_dba not used anymore
Change-Id: I6f9222dd40c553e1d0ad63e00e5874be939a97c1
2015-12-18 16:51:14 +01:00
30289fcab7 XComponentContext not needed for DataAccessDescriptor
Change-Id: If5ede0c308930d37bff9e97afc8a76cc5b709034
2015-12-18 16:51:14 +01:00
291f55edf3 assert that no ODF import happens without a BaseURL
Change-Id: I4520a9d0350349cb083ed627a19264a3a97e090f
2015-12-16 20:37:39 +01:00
1ded035f85 tdf#74608 dbaccess: Constructor for singleton DataAccessDescriptorFactory
Change-Id: Id1453e3cf1c8aef22536b4e0797cca7e654316c0
2015-12-12 17:23:34 +01:00
f229b9b04a tdf#74608 dbaccess: Constructor feature for ODatabaseDocument
Change-Id: Id524a1a717c350cb0558ef5ff11da3e6c941c203
2015-12-05 15:12:54 +01:00
970f518989 tdf#74608 dbaccess: Constructor feature for OComponentDefinition
Change-Id: I150cdaa46a0d86e1a4b6598ac580a10b2e8f071f
2015-12-05 15:12:53 +01:00
f7c94c5b8a tdf#74608 dbaccess: Constructor feature for OCommandDefinition
Change-Id: Ibaa1fd8310fdba073190a7721891ebb835eb0e6e
2015-12-05 07:08:46 +01:00
58a3f56978 UBSan: Bad static_cast from dbaccess::ODatabaseSource
...which doesn't inherit from cppu::OWeakObject in the first multiple-
inheritance slot

Change-Id: I1624e5c696d5a592f86e7c48849ecf3a39e1e6fb
2015-12-04 15:30:40 +01:00
81fa534019 tdf#74608 dbaccess: Constructor feature for ODatabaseSource
Change-Id: I9ab9c0eaf463c93caf116c98e47564562af0af5d
2015-12-03 21:07:35 +01:00
3aff028b8f loplugin:unusedfields in dbaccess
Change-Id: I563c3727c1719fe21acced269e5469c2de7112e8
2015-11-20 14:06:49 +02:00
fe3fd05966 add mapKeysToSequence/mapValuesToSequence methods to comphelper
and use them

Change-Id: If4dc9df63db37185228aeaaab2979498d61304ec
Reviewed-on: https://gerrit.libreoffice.org/20055
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2015-11-20 08:14:13 +00:00
2554efabb6 use comphelper::containerToSequence
in chart2, we remove a local equivalent of the method

Change-Id: I25129a3d1ea1dd724eb9cd38a57be37a78b3d100
2015-11-19 09:33:29 +02:00