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>
since...
commit ba81e5c6bd420b41a84ade6ccd774011a8089f7f
Date: Thu May 28 21:35:43 2015 +0100
tdf#91702 - fix stack-based MessBox allocation.
There is no special ScopedVclPtr<X>::Create or
ScopedVclPtrInstance<X>::Create just
VclPtr<X>::Create and a raw VclPtr<X>::Create()->foo
doesn't call dispose on the owned X
Change-Id: Ifacc8d5e742820701307c3c37b9b86487667d84f
verify that parameters on override methods have the same set of default
values for their params as their parent/super-methods do.
Change-Id: Ibdbc1c6e417fbaa680ea025a6bbf5ba9c2e5bcd2
Reviewed-on: https://gerrit.libreoffice.org/27437
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
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>
some places are marked with "dodgy"- need to check those to see
what is going on, because they are leaving dangling pointers behind
in the Menu class
Change-Id: I41d5c7c0fec2f70ce9e3ffdc48cd03d26c0a869b
Reviewed-on: https://gerrit.libreoffice.org/26516
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Currently the "Help" button is cropped and partially visible
on the Copy Table wizard. Increasing the width to 700 seems to
make it fully visible again.
Change-Id: Ib64ab0724d944f310f1c76a01ee91f00087bc320
Reviewed-on: https://gerrit.libreoffice.org/26548
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
this doesn't seem to make sense anymore since...
commit 4d49c9601c9b3e26a336e08e057d299895683480
Author: Stephan Bergmann <sbergman@redhat.com>
Date: Wed Jun 8 17:14:34 2016 +0200
Let loplugin:passstuffbyref also look at fn defn not preceded by any decl
so lets revert that to be safe
Change-Id: I78fe8ae48dc4c4f3d5786c7232d7e791ff50d9b4
Reviewed-on: https://gerrit.libreoffice.org/26189
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
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>
seems to be a regression from...
commit 356bc0f697299e5fb6156ce25dc69845eaa6f9e6
Author: Michael Meeks <michael.meeks@collabora.com>
Date: Wed Jul 1 19:03:55 2015 +0100
tdf#92434 - fix iteration, and remember to disposeAndClear.
which is part of the VclPtr stuff
so hold the connection by VclPtr when removing it from m_vTableConnection
and only call dispose on it when _bDelete is true, not always.
Change-Id: I38e65c6928499dc1e8bbf6b71e9901a4eaa5d913
The odd one out is the usage in Formula, which attempts
to restore focus to a particular window identified by
an unique id. In this case restore focus by keeping a VclPtr
to the desired window.
Change-Id: I1dc335325c109d75745c6bba2e12662e6ae50638
and remove the casting silliness, allowing the removal of
cairo_cairo.?xx
If anything is to go wrong I'd guess it'll be the windows directx stuff.
Change-Id: I3e22c07b9c26ade9b27a245fdd8408de540643f4
anyplace calling GetSystemChildSystemData on a SystemChildWindow is definitely
right
anyplace calling GetWindowSystemData on a Window *might* have intended to call
GetSystemChildSystemData on a Window casted back to an underlying
SystemChildWindow.
Change-Id: I7dcf3a50d0b7ed29bc08cfdb15cc0dcb86be8fa7
Reviewed-on: https://gerrit.libreoffice.org/25158
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>