summaryrefslogtreecommitdiff
path: root/winaccessibility/source/UAccCOM/MAccessible.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'winaccessibility/source/UAccCOM/MAccessible.cxx')
-rw-r--r--winaccessibility/source/UAccCOM/MAccessible.cxx97
1 files changed, 93 insertions, 4 deletions
diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx b/winaccessibility/source/UAccCOM/MAccessible.cxx
index d9ff89c7bd9b..82fb41a8bfd3 100644
--- a/winaccessibility/source/UAccCOM/MAccessible.cxx
+++ b/winaccessibility/source/UAccCOM/MAccessible.cxx
@@ -33,6 +33,8 @@
#include "AccHypertext.h"
#include "AccHyperLink.h"
+#include <vcl/svapp.hxx>
+
#include <com/sun/star/accessibility/XAccessibleText.hpp>
#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
#include <com/sun/star/accessibility/XAccessibleImage.hpp>
@@ -243,6 +245,8 @@ m_bRequiresSave(FALSE)
CMAccessible::~CMAccessible()
{
+ SolarMutexGuard g;
+
if(m_pszName!=NULL)
{
SAFE_SYSFREESTRING(m_pszName);
@@ -284,6 +288,8 @@ CMAccessible::~CMAccessible()
*/
STDMETHODIMP CMAccessible::get_accParent(IDispatch **ppdispParent)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -319,6 +325,8 @@ STDMETHODIMP CMAccessible::get_accParent(IDispatch **ppdispParent)
*/
STDMETHODIMP CMAccessible::get_accChildCount(long *pcountChildren)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -351,6 +359,8 @@ STDMETHODIMP CMAccessible::get_accChildCount(long *pcountChildren)
*/
STDMETHODIMP CMAccessible::get_accChild(VARIANT varChild, IDispatch **ppdispChild)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -385,6 +395,8 @@ STDMETHODIMP CMAccessible::get_accChild(VARIANT varChild, IDispatch **ppdispChil
*/
STDMETHODIMP CMAccessible::get_accName(VARIANT varChild, BSTR *pszName)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -422,6 +434,8 @@ STDMETHODIMP CMAccessible::get_accName(VARIANT varChild, BSTR *pszName)
*/
STDMETHODIMP CMAccessible::get_accValue(VARIANT varChild, BSTR *pszValue)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -465,6 +479,8 @@ STDMETHODIMP CMAccessible::get_accValue(VARIANT varChild, BSTR *pszValue)
*/
STDMETHODIMP CMAccessible::get_accDescription(VARIANT varChild, BSTR *pszDescription)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -502,6 +518,8 @@ STDMETHODIMP CMAccessible::get_accDescription(VARIANT varChild, BSTR *pszDescrip
*/
STDMETHODIMP CMAccessible::get_accRole(VARIANT varChild, VARIANT *pvarRole)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -551,6 +569,8 @@ STDMETHODIMP CMAccessible::get_accRole(VARIANT varChild, VARIANT *pvarRole)
*/
STDMETHODIMP CMAccessible::get_accState(VARIANT varChild, VARIANT *pvarState)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -653,6 +673,8 @@ static void GetMnemonicChar( const ::rtl::OUString& aStr, WCHAR* wStr)
*/
STDMETHODIMP CMAccessible::get_accKeyboardShortcut(VARIANT varChild, BSTR *pszKeyboardShortcut)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -806,6 +828,8 @@ STDMETHODIMP CMAccessible::get_accKeyboardShortcut(VARIANT varChild, BSTR *pszKe
*/
STDMETHODIMP CMAccessible::get_accFocus(VARIANT *pvarChild)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -843,6 +867,8 @@ STDMETHODIMP CMAccessible::get_accFocus(VARIANT *pvarChild)
*/
STDMETHODIMP CMAccessible::get_accSelection(VARIANT *pvarChildren)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -890,6 +916,8 @@ STDMETHODIMP CMAccessible::get_accSelection(VARIANT *pvarChildren)
*/
STDMETHODIMP CMAccessible::accLocation(long *pxLeft, long *pyTop, long *pcxWidth, long *pcyHeight, VARIANT varChild)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -946,6 +974,8 @@ STDMETHODIMP CMAccessible::accLocation(long *pxLeft, long *pyTop, long *pcxWidth
*/
STDMETHODIMP CMAccessible::accNavigate(long navDir, VARIANT varStart, VARIANT *pvarEndUpAt)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -986,6 +1016,8 @@ STDMETHODIMP CMAccessible::accNavigate(long navDir, VARIANT varStart, VARIANT *p
STDMETHODIMP CMAccessible::accHitTest(long xLeft, long yTop, VARIANT *pvarChild)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -1059,6 +1091,7 @@ STDMETHODIMP CMAccessible::QueryService(REFGUID guidService, REFIID riid, void**
*/
STDMETHODIMP CMAccessible::put_accName(VARIANT varChild, BSTR szName)
{
+ SolarMutexGuard g;
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -1092,6 +1125,7 @@ STDMETHODIMP CMAccessible::put_accName(VARIANT varChild, BSTR szName)
*/
STDMETHODIMP CMAccessible::put_accValue(VARIANT varChild, BSTR szValue)
{
+ SolarMutexGuard g;
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -1123,6 +1157,7 @@ STDMETHODIMP CMAccessible::put_accValue(VARIANT varChild, BSTR szValue)
*/
STDMETHODIMP CMAccessible::Put_XAccName(const OLECHAR __RPC_FAR *pszName)
{
+ // internal IMAccessible - no mutex meeded
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -1148,6 +1183,8 @@ STDMETHODIMP CMAccessible::Put_XAccName(const OLECHAR __RPC_FAR *pszName)
*/
STDMETHODIMP CMAccessible::Put_XAccRole(unsigned short pRole)
{
+ // internal IMAccessible - no mutex meeded
+
m_iRole = pRole;
return S_OK;
}
@@ -1159,6 +1196,8 @@ STDMETHODIMP CMAccessible::Put_XAccRole(unsigned short pRole)
*/
STDMETHODIMP CMAccessible::DecreaseState(DWORD pXSate)
{
+ // internal IMAccessible - no mutex meeded
+
m_dState &= (~pXSate);
return S_OK;
}
@@ -1170,6 +1209,8 @@ STDMETHODIMP CMAccessible::DecreaseState(DWORD pXSate)
*/
STDMETHODIMP CMAccessible::IncreaseState(DWORD pXSate)
{
+ // internal IMAccessible - no mutex meeded
+
m_dState |= pXSate;
return S_OK;
}
@@ -1181,6 +1222,8 @@ STDMETHODIMP CMAccessible::IncreaseState(DWORD pXSate)
*/
STDMETHODIMP CMAccessible::SetState(DWORD pXSate)
{
+ // internal IMAccessible - no mutex meeded
+
m_dState = pXSate;
return S_OK;
}
@@ -1194,6 +1237,7 @@ STDMETHODIMP CMAccessible::SetState(DWORD pXSate)
*/
STDMETHODIMP CMAccessible::Put_XAccDescription(const OLECHAR __RPC_FAR *pszDescription)
{
+ // internal IMAccessible - no mutex meeded
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -1220,6 +1264,7 @@ STDMETHODIMP CMAccessible::Put_XAccDescription(const OLECHAR __RPC_FAR *pszDescr
*/
STDMETHODIMP CMAccessible::Put_XAccValue(const OLECHAR __RPC_FAR *pszAccValue)
{
+ // internal IMAccessible - no mutex meeded
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -1245,6 +1290,7 @@ STDMETHODIMP CMAccessible::Put_XAccValue(const OLECHAR __RPC_FAR *pszAccValue)
*/
STDMETHODIMP CMAccessible::Put_XAccWindowHandle(HWND hwnd)
{
+ // internal IMAccessible - no mutex meeded
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -1261,6 +1307,7 @@ STDMETHODIMP CMAccessible::Put_XAccWindowHandle(HWND hwnd)
*/
STDMETHODIMP CMAccessible::Put_XAccFocus(long dChildID)
{
+ // internal IMAccessible - no mutex meeded
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -1294,6 +1341,7 @@ STDMETHODIMP CMAccessible::Put_XAccFocus(long dChildID)
*/
STDMETHODIMP CMAccessible::Put_XAccLocation(const Location sLocation)
{
+ // internal IMAccessible - no mutex meeded
this->m_sLocation = sLocation;
return S_OK;
@@ -1307,6 +1355,8 @@ STDMETHODIMP CMAccessible::Put_XAccLocation(const Location sLocation)
*/
STDMETHODIMP CMAccessible::Put_XAccParent(IMAccessible __RPC_FAR *pIParent)
{
+ // internal IMAccessible - no mutex meeded
+
this->m_pIParent = pIParent;
if(pIParent)
@@ -1322,6 +1372,7 @@ STDMETHODIMP CMAccessible::Put_XAccParent(IMAccessible __RPC_FAR *pIParent)
*/
STDMETHODIMP CMAccessible::Put_XAccChildID(long dChildID)
{
+ // internal IMAccessible - no mutex meeded
this->m_dChildID = dChildID;
return S_OK;
@@ -1334,6 +1385,8 @@ STDMETHODIMP CMAccessible::Put_XAccChildID(long dChildID)
*/
STDMETHODIMP CMAccessible::Put_XAccAgent(hyper pAgent)
{
+ // internal IMAccessible - no mutex meeded
+
g_pAgent = reinterpret_cast<AccObjectManagerAgent*>(pAgent);
return S_OK;
}
@@ -1347,6 +1400,7 @@ STDMETHODIMP CMAccessible::Put_XAccAgent(hyper pAgent)
*/
STDMETHODIMP CMAccessible::NotifyDestroy(BOOL isDestroy)
{
+ // internal IMAccessible - no mutex meeded
m_isDestroy = isDestroy;
m_xAccessible.clear();
@@ -1650,6 +1704,8 @@ HRESULT CMAccessible::GetPreSibling(VARIANT varStart,VARIANT* pvarEndUpAt)
*/
STDMETHODIMP CMAccessible::get_nRelations( long __RPC_FAR *nRelations)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
// #CHECK#
@@ -1678,6 +1734,8 @@ STDMETHODIMP CMAccessible::get_nRelations( long __RPC_FAR *nRelations)
STDMETHODIMP CMAccessible::get_relation( long relationIndex, IAccessibleRelation __RPC_FAR *__RPC_FAR *relation)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -1739,6 +1797,8 @@ STDMETHODIMP CMAccessible::get_relation( long relationIndex, IAccessibleRelation
STDMETHODIMP CMAccessible::get_relations( long, IAccessibleRelation __RPC_FAR *__RPC_FAR *relation, long __RPC_FAR *nRelations)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
// #CHECK#
@@ -1797,6 +1857,8 @@ STDMETHODIMP CMAccessible::get_relations( long, IAccessibleRelation __RPC_FAR *_
STDMETHODIMP CMAccessible::role(long __RPC_FAR *role)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
(*role) = m_iRole;
@@ -1809,6 +1871,7 @@ STDMETHODIMP CMAccessible::role(long __RPC_FAR *role)
STDMETHODIMP CMAccessible:: get_nActions(long __RPC_FAR *nActions)
{
+ SolarMutexGuard g;
try
{
@@ -1881,6 +1944,8 @@ static XAccessible* getTheParentOfMember(XAccessible* pXAcc)
STDMETHODIMP CMAccessible:: get_groupPosition(long __RPC_FAR *groupLevel,long __RPC_FAR *similarItemsInGroup,long __RPC_FAR *positionInGroup)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
// #CHECK#
@@ -2066,6 +2131,7 @@ STDMETHODIMP CMAccessible:: get_extendedStates( long, BSTR __RPC_FAR *__RPC_FAR
STDMETHODIMP CMAccessible:: get_uniqueID(long __RPC_FAR *uniqueID)
{
+ SolarMutexGuard g;
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -2082,6 +2148,7 @@ STDMETHODIMP CMAccessible:: get_uniqueID(long __RPC_FAR *uniqueID)
STDMETHODIMP CMAccessible:: get_windowHandle(HWND __RPC_FAR *windowHandle)
{
+ SolarMutexGuard g;
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -2260,6 +2327,8 @@ HRESULT CMAccessible::DeSelectMutipleChildren( XAccessible** pItem,int size )
*/
STDMETHODIMP CMAccessible::SetXAccessible(hyper pXAcc)
{
+ // internal IMAccessible - no mutex meeded
+
m_xAccessible = reinterpret_cast<XAccessible*>(pXAcc);
m_pEnumVar->PutSelection(/*XAccessibleSelection*/
reinterpret_cast<hyper>(m_xAccessible.get()));
@@ -2280,6 +2349,8 @@ STDMETHODIMP CMAccessible::SetXAccessible(hyper pXAcc)
*/
STDMETHODIMP CMAccessible::accSelect(long flagsSelect, VARIANT varChild)
{
+ SolarMutexGuard g;
+
ENTER_PROTECTED_BLOCK
ISDESTROY()
if( (flagsSelect&SELFLAG_ADDSELECTION) &&
@@ -2372,7 +2443,8 @@ STDMETHODIMP CMAccessible::accSelect(long flagsSelect, VARIANT varChild)
*/
STDMETHODIMP CMAccessible::GetUNOInterface(hyper * pXAcc)
{
- // #CHECK#
+ // internal IMAccessible - no mutex meeded
+
if(pXAcc == NULL)
return E_INVALIDARG;
@@ -2387,6 +2459,8 @@ STDMETHODIMP CMAccessible::GetUNOInterface(hyper * pXAcc)
*/
STDMETHODIMP CMAccessible::SetDefaultAction(hyper pAction)
{
+ // internal IMAccessible - no mutex meeded
+
m_xAction = reinterpret_cast<XAccessibleAction*>(pAction);
return S_OK;
}
@@ -2400,6 +2474,7 @@ STDMETHODIMP CMAccessible::SetDefaultAction(hyper pAction)
*/
HRESULT STDMETHODCALLTYPE CMAccessible::get_accDefaultAction(VARIANT varChild, BSTR *pszDefaultAction)
{
+ SolarMutexGuard g;
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -2438,6 +2513,7 @@ HRESULT STDMETHODCALLTYPE CMAccessible::get_accDefaultAction(VARIANT varChild, B
*/
HRESULT STDMETHODCALLTYPE CMAccessible::accDoDefaultAction(VARIANT varChild)
{
+ SolarMutexGuard g;
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -2472,6 +2548,7 @@ HRESULT STDMETHODCALLTYPE CMAccessible::accDoDefaultAction(VARIANT varChild)
*/
STDMETHODIMP CMAccessible::Put_ActionDescription( const OLECHAR* szAction)
{
+ // internal IMAccessible - no mutex meeded
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -2590,6 +2667,8 @@ HRESULT WINAPI CMAccessible::SmartQI(void* /*pv*/, REFIID iid, void** ppvObject)
{
if (InlineIsEqualGUID(iid, *pMap->piid))
{
+ SolarMutexGuard g;
+
XInterface* pXI = NULL;
BOOL bFound = GetXInterfaceFromXAccessible(m_xAccessible.get(),
&pXI, pMap->XIFIndex);
@@ -3029,7 +3108,8 @@ void CMAccessible::ConvertAnyToVariant(const ::com::sun::star::uno::Any &rAnyVal
STDMETHODIMP CMAccessible::Get_XAccChildID(long* childID)
{
- // #CHECK#
+ // internal IMAccessible - no mutex meeded
+
if(childID == NULL)
{
return E_FAIL;
@@ -3037,10 +3117,13 @@ STDMETHODIMP CMAccessible::Get_XAccChildID(long* childID)
*childID = m_dChildID;
return S_OK;
}
+
STDMETHODIMP CMAccessible:: get_states(AccessibleStates __RPC_FAR *states )
{
- ENTER_PROTECTED_BLOCK
- ISDESTROY()
+ SolarMutexGuard g;
+
+ ENTER_PROTECTED_BLOCK
+ ISDESTROY()
if (!m_xContext.is())
return E_FAIL;
@@ -3207,6 +3290,7 @@ DWORD GetMSAAStateFromUNO(short xState)
STDMETHODIMP CMAccessible:: get_appName( BSTR __RPC_FAR *name)
{
+ SolarMutexGuard g;
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -3219,6 +3303,7 @@ STDMETHODIMP CMAccessible:: get_appName( BSTR __RPC_FAR *name)
}
STDMETHODIMP CMAccessible:: get_appVersion(BSTR __RPC_FAR *version)
{
+ SolarMutexGuard g;
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -3230,6 +3315,7 @@ STDMETHODIMP CMAccessible:: get_appVersion(BSTR __RPC_FAR *version)
}
STDMETHODIMP CMAccessible:: get_toolkitName(BSTR __RPC_FAR *name)
{
+ SolarMutexGuard g;
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -3241,6 +3327,7 @@ STDMETHODIMP CMAccessible:: get_toolkitName(BSTR __RPC_FAR *name)
}
STDMETHODIMP CMAccessible:: get_toolkitVersion(BSTR __RPC_FAR *version)
{
+ SolarMutexGuard g;
ENTER_PROTECTED_BLOCK
ISDESTROY()
@@ -3254,6 +3341,8 @@ STDMETHODIMP CMAccessible:: get_toolkitVersion(BSTR __RPC_FAR *version)
STDMETHODIMP CMAccessible::get_attributes(/*[out]*/ BSTR *pAttr)
{
+ SolarMutexGuard g;
+
Reference<XAccessibleContext> pRContext = m_xAccessible->getAccessibleContext();
if( !pRContext.is() )
{