diff options
author | Oliver Bolte <obo@openoffice.org> | 2007-01-23 06:32:45 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2007-01-23 06:32:45 +0000 |
commit | 57ef4af12f0ca562ec43894190fdd2a467a87ad0 (patch) | |
tree | 4e269a15275dd2771a1bbf638561abdc874ea168 | |
parent | d2d6142b2eda7ef2e8f1813349a24c1cbef35781 (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.cxx | 31 |
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 } |