--- old/aqua/source/window/salframeview.mm 2008-08-29 15:22:48.000000000 +0200 +++ new/aqua/source/window/salframeview.mm 2008-09-05 16:38:37.000000000 +0200 @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: salframeview.mm,v $ - * $Revision: 1.12 $ + * $Revision: 1.11.16.2 $ * * This file is part of OpenOffice.org. * @@ -385,8 +385,20 @@ static const struct ExceptionalKey -(void)drawRect: (NSRect)aRect { - YIELD_GUARD; + // HOTFIX: #i93512# prevent deadlocks if other threads already have the salmutex + // TODO: get rid of this insanity + if( !ImplSalYieldMutexTryToAcquire() ) + { + AquaSalGraphics* pGraphics = (mpFrame && AquaSalFrame::isAlive(mpFrame)) ? mpFrame->mpGraphics : NULL; + if( pGraphics ) + { + const CGRect aCGRect = {{aRect.origin.x,aRect.origin.y},{aRect.size.width,aRect.size.height}}; + mpFrame->mpGraphics->RefreshRect( aCGRect ); + } + return; + } + try { if( mpFrame && AquaSalFrame::isAlive( mpFrame ) ) { if( mpFrame->mpGraphics ) @@ -395,9 +407,13 @@ static const struct ExceptionalKey if( mpFrame->getClipPath() ) [mpFrame->getWindow() invalidateShadow]; } - } } + catch(com::sun::star::uno::Exception&) + { /*TODO?*/ } + + ImplSalYieldMutexRelease(); +} -(void)sendMouseEventToFrame: (NSEvent*)pEvent button:(USHORT)nButton eventtype:(USHORT)nEvent {