summaryrefslogtreecommitdiff
path: root/embedserv
diff options
context:
space:
mode:
authorRüdiger Timm <rt@openoffice.org>2006-05-05 08:55:59 +0000
committerRüdiger Timm <rt@openoffice.org>2006-05-05 08:55:59 +0000
commit45c581a4185d1709b36e47a69ccd271dffb89357 (patch)
treea8cb7964bd21ef9534ce14e9ccac71f9a514568f /embedserv
parentbb6cd5b10dbc0f88c700fecae80bdd4484a16d77 (diff)
INTEGRATION: CWS fwkc03fixes (1.2.54); FILE MERGED
2006/04/28 13:11:40 mav 1.2.54.1: #134455# fix objects crosslinking
Diffstat (limited to 'embedserv')
-rw-r--r--embedserv/source/embed/iipaobj.cxx24
1 files changed, 13 insertions, 11 deletions
diff --git a/embedserv/source/embed/iipaobj.cxx b/embedserv/source/embed/iipaobj.cxx
index 52e790a7699a..42547baf9b54 100644
--- a/embedserv/source/embed/iipaobj.cxx
+++ b/embedserv/source/embed/iipaobj.cxx
@@ -3,10 +3,9 @@
-CIIAObj::CIIAObj(EmbedDocument_Impl *pEmbDoc,DocumentHolder* pDocHolder)
- : m_cRef(0),
- m_pEmbDoc(pEmbDoc),
- m_pDocHolder(pDocHolder)
+CIIAObj::CIIAObj(DocumentHolder* pDocHolder)
+ : m_refCount( 0L ),
+ m_rDocHolder( pDocHolder )
{
}
@@ -40,17 +39,17 @@ STDMETHODIMP CIIAObj::QueryInterface(REFIID riid, LPVOID FAR *ppv)
STDMETHODIMP_(ULONG) CIIAObj::AddRef(void)
{
- ++m_cRef;
- return m_pEmbDoc->AddRef();
+ return osl_incrementInterlockedCount( &m_refCount);
}
STDMETHODIMP_(ULONG) CIIAObj::Release(void)
{
- --m_cRef;
- return m_pEmbDoc->Release();
-}
-
+ sal_Int32 nCount = osl_decrementInterlockedCount( &m_refCount);
+ if ( nCount == 0 )
+ delete this;
+ return nCount;
+}
/* IOleInPlaceActiveObject methods*/
@@ -84,7 +83,10 @@ STDMETHODIMP CIIAObj::ResizeBorder(
{
if(!bFrame) return NOERROR;
- return m_pDocHolder->SetContRects(pRect);
+ if ( !m_rDocHolder.is() )
+ return E_FAIL;
+
+ return m_rDocHolder->SetContRects(pRect);
}