diff options
author | Jörg Budischewski <jbu@openoffice.org> | 2001-01-31 15:41:23 +0000 |
---|---|---|
committer | Jörg Budischewski <jbu@openoffice.org> | 2001-01-31 15:41:23 +0000 |
commit | fa0cb62f8f9aa8e657dc2cccf859eefe524dcadd (patch) | |
tree | 69fd8c5d22989d5275eaf4bf02ee8ff0411ece8e /bridges | |
parent | aef9d02d557673dd221f7269e59be3c1997f1369 (diff) |
#80673# in the ForceSynchronous case, the releases are now sent by the writer thread
Diffstat (limited to 'bridges')
-rw-r--r-- | bridges/source/remote/urp/urp_dispatch.cxx | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/bridges/source/remote/urp/urp_dispatch.cxx b/bridges/source/remote/urp/urp_dispatch.cxx index ad6a3a769542..80f1266ad43e 100644 --- a/bridges/source/remote/urp/urp_dispatch.cxx +++ b/bridges/source/remote/urp/urp_dispatch.cxx @@ -2,9 +2,9 @@ * * $RCSfile: urp_dispatch.cxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: jbu $ $Date: 2000-11-28 14:42:38 $ + * last change: $Author: jbu $ $Date: 2001-01-31 16:41:23 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -131,9 +131,21 @@ void SAL_CALL urp_sendRequest( ClientJob job(pEnvRemote, pImpl, pOid, pMemberType, pInterfaceType, pReturn, ppArgs, ppException); - if( job.pack() && ! job.isOneway() ) + if( pImpl->m_properties.bForceSynchronous && + REMOTE_RELEASE_METHOD_INDEX == + ((typelib_InterfaceMemberTypeDescription*)pMemberType)->nPosition && + pImpl->m_pWriter->getIdentifier() != ::vos::OThread::getCurrentIdentifier() ) { - job.wait(); + // all release calls in the FORCE SYNCHRONOUS case are delegated to the writer thread to avoid + // multiple synchron calls with the same thread id. + pImpl->m_pWriter->insertReleaseRemoteCall( pOid, pInterfaceType->aBase.pWeakRef ); + } + else + { + if( job.pack() && ! job.isOneway() ) + { + job.wait(); + } } } |