summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2007-01-23 06:32:45 +0000
committerOliver Bolte <obo@openoffice.org>2007-01-23 06:32:45 +0000
commit57ef4af12f0ca562ec43894190fdd2a467a87ad0 (patch)
tree4e269a15275dd2771a1bbf638561abdc874ea168
parentd2d6142b2eda7ef2e8f1813349a24c1cbef35781 (diff)
INTEGRATION: CWS fwk59 (1.5.22); FILE MERGED
2007/01/04 16:05:11 mav 1.5.22.1: #i71349# introduce a better workaround for AcrobatReader 7.0.8 object
-rw-r--r--embeddedobj/source/msole/advisesink.cxx31
1 files changed, 18 insertions, 13 deletions
diff --git a/embeddedobj/source/msole/advisesink.cxx b/embeddedobj/source/msole/advisesink.cxx
index ece6eedfb637..34cdeaaced9d 100644
--- a/embeddedobj/source/msole/advisesink.cxx
+++ b/embeddedobj/source/msole/advisesink.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: advisesink.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: obo $ $Date: 2006-10-12 11:21:42 $
+ * last change: $Author: obo $ $Date: 2007-01-23 07:32:45 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -40,6 +40,8 @@
#include <advisesink.hxx>
#include <olecomponent.hxx>
+#include <rtl/ref.hxx>
+
OleWrapperAdviseSink::OleWrapperAdviseSink( OleComponent* pOleComp )
: m_nRefCount( 0 )
, m_pOleComp( pOleComp )
@@ -98,22 +100,16 @@ STDMETHODIMP_(void) OleWrapperAdviseSink::OnDataChange(LPFORMATETC, LPSTGMEDIUM)
STDMETHODIMP_(void) OleWrapperAdviseSink::OnViewChange(DWORD dwAspect, LONG)
{
- OleComponent* pLockComponent = NULL;
+ ::rtl::Reference< OleComponent > xLockComponent;
{
osl::MutexGuard aGuard( m_aMutex );
if ( m_pOleComp )
- {
- pLockComponent = m_pOleComp;
- pLockComponent->acquire();
- }
+ xLockComponent = m_pOleComp;
}
- if ( pLockComponent )
- {
- pLockComponent->OnViewChange_Impl( dwAspect );
- pLockComponent->release();
- }
+ if ( xLockComponent.is() )
+ xLockComponent->OnViewChange_Impl( dwAspect );
}
STDMETHODIMP_(void) OleWrapperAdviseSink::OnRename(LPMONIKER)
@@ -130,7 +126,16 @@ STDMETHODIMP_(void) OleWrapperAdviseSink::OnSave(void)
STDMETHODIMP_(void) OleWrapperAdviseSink::OnClose(void)
{
- // mainly handled by inprocess handler
+ ::rtl::Reference< OleComponent > xLockComponent;
+
+ {
+ osl::MutexGuard aGuard( m_aMutex );
+ if ( m_pOleComp )
+ xLockComponent = m_pOleComp;
+ }
+
+ if ( xLockComponent.is() )
+ xLockComponent->OnClose_Impl();
// TODO: sometimes it can be necessary to simulate OnShowWindow( False ) here
}