summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
authorJörg Budischewski <jbu@openoffice.org>2001-01-31 15:41:23 +0000
committerJörg Budischewski <jbu@openoffice.org>2001-01-31 15:41:23 +0000
commitfa0cb62f8f9aa8e657dc2cccf859eefe524dcadd (patch)
tree69fd8c5d22989d5275eaf4bf02ee8ff0411ece8e /bridges
parentaef9d02d557673dd221f7269e59be3c1997f1369 (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.cxx20
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();
+ }
}
}