Revert "verify SolarMutex when ref-counting VclPtr" series

This reverts the following commits:

    commit 722f4e1d86
    tdf#104573 - Assertion failed: SolarMutex not locked

    commit f04ec99f5e
    tdf#104573 - Assertion failed: SolarMutex not locked

    commit 71b1e3ff63
    tdf#104573 - Assertion failed: SolarMutex not locked when trying

    commit e794ce1eef
    verify that we hold the SolarMutex when ref-counting VclPtr

IRC discussion:
<noelgrandin> sberg, maybe I should revert this whole "VclPtr assert" series, I don't have mental bandwidth to sort this out properly now
<sberg> noelgrandin, what I fear is that you'll end up adding lots of SolarMutex locks to small places, where the proper fix would be to add it further out; and once such a dreaded recursive SolarMutex lock is in place (but needlessly so, once the proper fix is done), it's hard to clean that up again
<noelgrandin> sberg, yeah, in that case I'll just remove all of this, leave it for another day

Change-Id: Ie4f84b72b79a1b7e80164b5c7693af398c2c569a
Reviewed-on: https://gerrit.libreoffice.org/31946
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
Noel Grandin 2016-12-13 12:37:04 +02:00
parent b252dbf59d
commit 872cf486c5
17 changed files with 6 additions and 51 deletions

View file

@ -35,7 +35,6 @@
#include <svx/charthelper.hxx>
#include <vcl/openglwin.hxx>
#include <vcl/svapp.hxx>
#include <com/sun/star/chart/ChartDataRowSource.hpp>
@ -1419,7 +1418,6 @@ void ChartModel::setWindow( const sal_uInt64 nWindowPtr )
throw (uno::RuntimeException, std::exception)
{
OpenGLWindow* pWindow = reinterpret_cast<OpenGLWindow*>(nWindowPtr);
SolarMutexGuard aGuard;
mpOpenGLWindow = pWindow;
}

View file

@ -71,7 +71,6 @@ CloseDispatcher::CloseDispatcher(const css::uno::Reference< css::uno::XComponent
uno::Reference<awt::XWindow> xWindow = xTarget->getContainerWindow();
if (xWindow.is())
{
SolarMutexGuard g;
VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow(xWindow);
if (pWindow->IsSystemWindow())
m_pSysWindow = dynamic_cast<SystemWindow*>(pWindow.get());

View file

@ -2556,7 +2556,6 @@ void ToolbarLayoutManager::implts_calcWindowPosSizeOnSingleRowColumn(
nCurrPos += ( aWinRect.Y - nCurrPos ) + aWinRect.Height;
}
}
pDockAreaWindow.clear(); // must be cleared under SolarMutex
}
void ToolbarLayoutManager::implts_setLayoutDirty()

View file

@ -1672,7 +1672,6 @@ void LoadEnv::impl_applyPersistentWindowState(const css::uno::Reference< css::aw
WorkWindow* pWorkWindow = static_cast<WorkWindow*>(pWindow.get());
if (pWorkWindow->IsMinimized())
return;
pWindow.clear(); // must be cleared under SolarMutex
aSolarGuard1.clear();
// <- SOLAR SAFE

View file

@ -876,8 +876,6 @@ void SAL_CALL Frame::initialize( const css::uno::Reference< css::awt::XWindow >&
VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow(xWindow);
if (pWindow && pWindow->IsVisible())
m_bIsHidden = false;
// must be cleared while under the SolarMutex
pWindow.clear();
css::uno::Reference< css::frame::XLayoutManager2 > xLayoutManager = m_xLayoutManager;
@ -1544,7 +1542,6 @@ sal_Bool SAL_CALL Frame::setComponent(const css::uno::Reference< css::awt::XWind
css::uno::Reference< css::frame::XController > xOldController = m_xController;
VclPtr<vcl::Window> pOwnWindow = VCLUnoHelper::GetWindow( xContainerWindow );
bool bHadFocus = pOwnWindow->HasChildPathFocus();
pOwnWindow.clear(); // must be cleared under SolarMutex
bool bWasConnected = m_bConnected;
aReadLock.clear();
/* } SAFE */

View file

@ -222,9 +222,6 @@ MenuBarManager::~MenuBarManager()
m_aAsyncSettingsTimer.Stop();
SAL_WARN_IF( OWeakObject::m_refCount != 0, "fwk.uielement", "Who wants to delete an object with refcount > 0!" );
SolarMutexGuard aGuard;
m_pVCLMenu.clear();
}
void MenuBarManager::Destroy()

View file

@ -317,7 +317,6 @@ public:
NotifyEvent( MouseNotifyEvent nEventType,
vcl::Window* pWindow,
const void* pEvent = nullptr );
~NotifyEvent();
MouseNotifyEvent GetType() const { return mnEventType; }
vcl::Window* GetWindow() const { return mpWindow; }

View file

@ -35,14 +35,12 @@ class VCL_DLLPUBLIC VclReferenceBase
public:
inline void acquire() const
{
DBG_TESTSOLARMUTEX();
assert(mnRefCnt>0);
mnRefCnt++;
}
inline void release() const
{
DBG_TESTSOLARMUTEX();
assert(mnRefCnt>0);
if (!--mnRefCnt)
delete this;

View file

@ -27,7 +27,6 @@ $(eval $(call gb_Library_use_libraries,protocolhandler,\
fwe \
sal \
sfx \
tl \
vcl \
$(gb_UWINAPI) \
))

View file

@ -29,7 +29,6 @@ $(eval $(call gb_CppunitTest_use_libraries,sdext_pdfimport,\
cppuhelper \
sal \
test \
tl \
unotest \
$(gb_UWINAPI) \
))

View file

@ -30,7 +30,6 @@ $(eval $(call gb_Executable_use_libraries,pdf2xml,\
unotest \
cppuhelper \
sal \
tl \
))
$(eval $(call gb_Executable_use_library_objects,pdf2xml,pdfimport))

View file

@ -28,7 +28,6 @@ $(eval $(call gb_Executable_use_libraries,pdfunzip,\
cppuhelper \
sal \
vcl \
tl \
))
$(eval $(call gb_Executable_use_library_objects,pdfunzip,pdfimport))

View file

@ -27,7 +27,6 @@ $(eval $(call gb_Library_use_libraries,pdfimport,\
cppu \
cppuhelper \
sal \
tl \
))
$(eval $(call gb_Library_use_externals,pdfimport,\

View file

@ -92,17 +92,11 @@ VclWindowEvent::VclWindowEvent( vcl::Window* pWin, VclEventId n, void* pDat ) :
VclWindowEvent::~VclWindowEvent() {}
VclMenuEvent::VclMenuEvent( Menu* pM, VclEventId n, sal_uInt16 nPos )
: VclSimpleEvent(n), mnPos(nPos)
{
SolarMutexGuard aGuard;
pMenu = pM;
}
: VclSimpleEvent(n), pMenu(pM), mnPos(nPos)
{}
VclMenuEvent::~VclMenuEvent()
{
SolarMutexGuard aGuard;
pMenu.clear();
}
{}
Menu* VclMenuEvent::GetMenu() const
{

View file

@ -652,16 +652,9 @@ void Window::ImplCallFocusChangeActivate( vcl::Window* pNewOverlapWindow,
NotifyEvent::NotifyEvent( MouseNotifyEvent nEventType, vcl::Window* pWindow,
const void* pEvent )
{
SolarMutexGuard aVclGuard;
mpWindow = pWindow;
mpData = const_cast<void*>(pEvent);
mnEventType = nEventType;
}
NotifyEvent::~NotifyEvent()
{
SolarMutexGuard aVclGuard;
mpWindow.clear();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -1407,7 +1407,6 @@ void Menu::ImplAddDel( ImplMenuDelData& rDel )
SAL_WARN_IF( rDel.mpMenu, "vcl", "Menu::ImplAddDel(): cannot add ImplMenuDelData twice !" );
if( !rDel.mpMenu )
{
SolarMutexGuard aGuard;
rDel.mpMenu = this;
rDel.mpNext = mpFirstDel;
mpFirstDel = &rDel;
@ -1416,10 +1415,7 @@ void Menu::ImplAddDel( ImplMenuDelData& rDel )
void Menu::ImplRemoveDel( ImplMenuDelData& rDel )
{
{
SolarMutexGuard aGuard;
rDel.mpMenu = nullptr;
}
rDel.mpMenu = nullptr;
if ( mpFirstDel == &rDel )
{
mpFirstDel = rDel.mpNext;
@ -2605,10 +2601,7 @@ bool Menu::HandleMenuActivateEvent( Menu *pMenu ) const
{
ImplMenuDelData aDelData( this );
{
SolarMutexGuard aGuard;
pMenu->pStartedFrom = const_cast<Menu*>(this);
}
pMenu->pStartedFrom = const_cast<Menu*>(this);
pMenu->bInCallback = true;
pMenu->Activate();
@ -2624,10 +2617,7 @@ bool Menu::HandleMenuDeActivateEvent( Menu *pMenu ) const
{
ImplMenuDelData aDelData( this );
{
SolarMutexGuard aGuard;
pMenu->pStartedFrom = const_cast<Menu*>(this);
}
pMenu->pStartedFrom = const_cast<Menu*>(this);
pMenu->bInCallback = true;
pMenu->Deactivate();
if( !aDelData.isDeleted() )

View file

@ -161,10 +161,7 @@ void Window::ImplCallMouseMove( sal_uInt16 nMouseCode, bool bModChanged )
void Window::ImplGenerateMouseMove()
{
if ( !mpWindowImpl->mpFrameData->mnMouseMoveId )
{
SolarMutexGuard aVclGuard;
mpWindowImpl->mpFrameData->mnMouseMoveId = Application::PostUserEvent( LINK( mpWindowImpl->mpFrameWindow, Window, ImplGenerateMouseMoveHdl ), nullptr, true );
}
}
IMPL_LINK_NOARG(Window, ImplGenerateMouseMoveHdl, void*, void)