summaryrefslogtreecommitdiff
path: root/sw/source
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2024-02-01 11:46:53 +0600
committerMike Kaganski <mike.kaganski@collabora.com>2024-02-01 11:22:17 +0100
commit575a713aae2beb4402ea9c41802311966329b8ea (patch)
treee48b206ce4e5625d2c47d7e7ed99cb3df1117128 /sw/source
parent7eade23bc642ef7270a24cfbc25761fc413170c8 (diff)
tdf#159493: hold solar mutex in TimerUpdate
Several functions called from here check that the mutex is held, specifically: === call stack 1 === tllo.dll!DbgTestSolarMutex() at C:\lo\core\tools\source\debug\debug.cxx(55) swlo.dll!SwTextBoxHelper::isTextBox(const SwFrameFormat * pFormat, unsigned short nType, const SdrObject * pObject) at C:\lo\core\sw\source\core\doc\textboxhelper.cxx(300) swlo.dll!SwDoc::GetFlyCount(FlyCntType eType, bool bIgnoreTextBoxes) at C:\lo\core\sw\source\core\doc\docfly.cxx(76) swlo.dll!SwFEShell::GetFlyCount(FlyCntType eType, bool bIgnoreTextBoxes) at C:\lo\core\sw\source\core\frmedt\feshview.cxx(2557) swlo.dll!SwContentType::FillMemberList(bool * pbContentChanged) at C:\lo\core\sw\source\uibase\utlui\content.cxx(585) swlo.dll!SwContentTree::HasContentChanged() at C:\lo\core\sw\source\uibase\utlui\content.cxx(3431) swlo.dll!SwContentTree::TimerUpdate(Timer * __formal) at C:\lo\core\sw\source\uibase\utlui\content.cxx(4174) ... === call stack 2 === tllo.dll!DbgTestSolarMutex() at C:\lo\core\tools\source\debug\debug.cxx(55) vcllo.dll!OutputDevice::SetDeviceClipRegion(const vcl::Region * pRegion) at C:\lo\core\vcl\source\outdev\clipping.cxx(205) vcllo.dll!OutputDevice::SetClipRegion(const vcl::Region & rRegion) at C:\lo\core\vcl\source\outdev\clipping.cxx(66) vcllo.dll!SvImpLBox::ShowCursor(bool bShow) at C:\lo\core\vcl\source\treelist\svimpbox.cxx(654) vcllo.dll!SvImpLBox::UpdateAll() at C:\lo\core\vcl\source\treelist\svimpbox.cxx(680) vcllo.dll!SvImpLBox::SetUpdateMode(bool bMode) at C:\lo\core\vcl\source\treelist\svimpbox.cxx(2996) vcllo.dll!SvTreeListBox::SetUpdateMode(bool bUpdate) at C:\lo\core\vcl\source\treelist\treelistbox.cxx(2306) vcllo.dll!SalInstanceTreeView::thaw() at C:\lo\core\vcl\source\app\salvtables.cxx(3938) swlo.dll!SwContentTree::clear() at C:\lo\core\sw\source\uibase\utlui\content.cxx(3018) swlo.dll!SwContentTree::Display(bool bActive) at C:\lo\core\sw\source\uibase\utlui\content.cxx(2853) swlo.dll!SwContentTree::TimerUpdate(Timer * __formal) at C:\lo\core\sw\source\uibase\utlui\content.cxx(4181) ... Change-Id: I643f5984d4678f8062f20bf341bfad6e8462526b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162865 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sw/source')
-rw-r--r--sw/source/uibase/utlui/content.cxx3
1 files changed, 2 insertions, 1 deletions
diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx
index 905043ce9716..5655b67ceab1 100644
--- a/sw/source/uibase/utlui/content.cxx
+++ b/sw/source/uibase/utlui/content.cxx
@@ -4170,7 +4170,8 @@ IMPL_LINK_NOARG(SwContentTree, TimerUpdate, Timer *, void)
{
SetActiveShell(pActShell);
}
- else if ((State::ACTIVE == m_eState || (State::CONSTANT == m_eState && pActShell == GetWrtShell())) &&
+ else if (SolarMutexGuard aGuard;
+ (State::ACTIVE == m_eState || (State::CONSTANT == m_eState && pActShell == GetWrtShell())) &&
HasContentChanged())
{
FindActiveTypeAndRemoveUserData();