diff options
Diffstat (limited to 'vcl/aqua/source/app/salinst.cxx')
-rw-r--r-- | vcl/aqua/source/app/salinst.cxx | 58 |
1 files changed, 41 insertions, 17 deletions
diff --git a/vcl/aqua/source/app/salinst.cxx b/vcl/aqua/source/app/salinst.cxx index da5b92b7ff7f..20ac4e2251d6 100644 --- a/vcl/aqua/source/app/salinst.cxx +++ b/vcl/aqua/source/app/salinst.cxx @@ -73,7 +73,7 @@ using namespace std; using namespace ::com::sun::star; -extern BOOL ImplSVMain(); +extern sal_Bool ImplSVMain(); static int* gpnInit = 0; static NSMenu* pDockMenu = nil; @@ -209,7 +209,7 @@ static void initNSApp() [NSApp activateIgnoringOtherApps: YES]; } -BOOL ImplSVMainHook( int * pnInit ) +sal_Bool ImplSVMainHook( int * pnInit ) { gpnInit = pnInit; @@ -404,7 +404,7 @@ sal_Bool SalYieldMutex::tryToAcquire() // some convenience functions regarding the yield mutex, aka solar mutex -BOOL ImplSalYieldMutexTryToAcquire() +sal_Bool ImplSalYieldMutexTryToAcquire() { AquaSalInstance* pInst = (AquaSalInstance*) GetSalData()->mpFirstInstance; if ( pInst ) @@ -451,7 +451,7 @@ SalInstance* CreateSalInstance() ImplGetSVData()->maNWFData.mbCenteredTabs = true; ImplGetSVData()->maNWFData.mbProgressNeedsErase = true; ImplGetSVData()->maNWFData.mbCheckBoxNeedsErase = true; - ImplGetSVData()->maGDIData.mbPrinterPullModel = true; + ImplGetSVData()->maNWFData.mnStatusBarLowerRightOffset = 10; ImplGetSVData()->maGDIData.mbNoXORClipping = true; ImplGetSVData()->maWinData.mbNoSaveBackground = true; @@ -515,7 +515,7 @@ void AquaSalInstance::wakeupYield() // ----------------------------------------------------------------------- -void AquaSalInstance::PostUserEvent( AquaSalFrame* pFrame, USHORT nType, void* pData ) +void AquaSalInstance::PostUserEvent( AquaSalFrame* pFrame, sal_uInt16 nType, void* pData ) { osl_acquireMutex( maUserEventListMutex ); maUserEvents.push_back( SalUserEvent( pFrame, pData, nType ) ); @@ -534,14 +534,14 @@ osl::SolarMutex* AquaSalInstance::GetYieldMutex() // ----------------------------------------------------------------------- -ULONG AquaSalInstance::ReleaseYieldMutex() +sal_uLong AquaSalInstance::ReleaseYieldMutex() { SalYieldMutex* pYieldMutex = mpSalYieldMutex; if ( pYieldMutex->GetThreadId() == osl::Thread::getCurrentIdentifier() ) { - ULONG nCount = pYieldMutex->GetAcquireCount(); - ULONG n = nCount; + sal_uLong nCount = pYieldMutex->GetAcquireCount(); + sal_uLong n = nCount; while ( n ) { pYieldMutex->release(); @@ -556,7 +556,7 @@ ULONG AquaSalInstance::ReleaseYieldMutex() // ----------------------------------------------------------------------- -void AquaSalInstance::AcquireYieldMutex( ULONG nCount ) +void AquaSalInstance::AcquireYieldMutex( sal_uLong nCount ) { SalYieldMutex* pYieldMutex = mpSalYieldMutex; while ( nCount ) @@ -568,6 +568,21 @@ void AquaSalInstance::AcquireYieldMutex( ULONG nCount ) // ----------------------------------------------------------------------- +bool AquaSalInstance::CheckYieldMutex() +{ + bool bRet = true; + + SalYieldMutex* pYieldMutex = mpSalYieldMutex; + if ( pYieldMutex->GetThreadId() != osl::Thread::getCurrentIdentifier()) + { + bRet = false; + } + + return bRet; +} + +// ----------------------------------------------------------------------- + bool AquaSalInstance::isNSAppThread() const { return osl::Thread::getCurrentIdentifier() == maMainThread; @@ -697,7 +712,7 @@ void AquaSalInstance::Yield( bool bWait, bool bHandleAllCurrentEvents ) bool bDispatchUser = true; while( bDispatchUser ) { - ULONG nCount = ReleaseYieldMutex(); + sal_uLong nCount = ReleaseYieldMutex(); // get one user event osl_acquireMutex( maUserEventListMutex ); @@ -738,7 +753,7 @@ void AquaSalInstance::Yield( bool bWait, bool bHandleAllCurrentEvents ) bool bHadEvent = false; do { - ULONG nCount = ReleaseYieldMutex(); + sal_uLong nCount = ReleaseYieldMutex(); pEvent = [NSApp nextEventMatchingMask: NSAnyEventMask untilDate: nil inMode: NSDefaultRunLoopMode dequeue: YES]; @@ -755,7 +770,7 @@ void AquaSalInstance::Yield( bool bWait, bool bHandleAllCurrentEvents ) // if we had no event yet, wait for one if requested if( bWait && ! bHadEvent ) { - ULONG nCount = ReleaseYieldMutex(); + sal_uLong nCount = ReleaseYieldMutex(); NSDate* pDt = AquaSalTimer::pRunningTimer ? [AquaSalTimer::pRunningTimer fireDate] : [NSDate distantFuture]; pEvent = [NSApp nextEventMatchingMask: NSAnyEventMask untilDate: pDt @@ -799,7 +814,7 @@ void AquaSalInstance::Yield( bool bWait, bool bHandleAllCurrentEvents ) // has dispatched an event, cop out at 200 ms osl_resetCondition( maWaitingYieldCond ); TimeValue aVal = { 0, 200000000 }; - ULONG nCount = ReleaseYieldMutex(); + sal_uLong nCount = ReleaseYieldMutex(); osl_waitCondition( maWaitingYieldCond, &aVal ); AcquireYieldMutex( nCount ); } @@ -830,7 +845,7 @@ void AquaSalInstance::Yield( bool bWait, bool bHandleAllCurrentEvents ) // ----------------------------------------------------------------------- -bool AquaSalInstance::AnyInput( USHORT nType ) +bool AquaSalInstance::AnyInput( sal_uInt16 nType ) { if( nType & INPUT_APPEVENT ) { @@ -876,14 +891,14 @@ bool AquaSalInstance::AnyInput( USHORT nType ) // ----------------------------------------------------------------------- -SalFrame* AquaSalInstance::CreateChildFrame( SystemParentData* pSystemParentData, ULONG nSalFrameStyle ) +SalFrame* AquaSalInstance::CreateChildFrame( SystemParentData* pSystemParentData, sal_uLong nSalFrameStyle ) { return NULL; } // ----------------------------------------------------------------------- -SalFrame* AquaSalInstance::CreateFrame( SalFrame* pParent, ULONG nSalFrameStyle ) +SalFrame* AquaSalInstance::CreateFrame( SalFrame* pParent, sal_uLong nSalFrameStyle ) { SalData::ensureThreadAutoreleasePool(); @@ -900,7 +915,7 @@ void AquaSalInstance::DestroyFrame( SalFrame* pFrame ) // ----------------------------------------------------------------------- -SalObject* AquaSalInstance::CreateObject( SalFrame* pParent, SystemWindowData* /* pWindowData */, BOOL /* bShow */ ) +SalObject* AquaSalInstance::CreateObject( SalFrame* pParent, SystemWindowData* /* pWindowData */, sal_Bool /* bShow */ ) { // SystemWindowData is meaningless on Mac OS X AquaSalObject *pObject = NULL; @@ -977,6 +992,9 @@ void AquaSalInstance::DeletePrinterQueueInfo( SalPrinterQueueInfo* pInfo ) XubString AquaSalInstance::GetDefaultPrinter() { + // #i113170# may not be the main thread if called from UNO API + SalData::ensureThreadAutoreleasePool(); + if( ! maDefaultPrinter.getLength() ) { NSPrintInfo* pPI = [NSPrintInfo sharedPrintInfo]; @@ -1001,6 +1019,9 @@ XubString AquaSalInstance::GetDefaultPrinter() SalInfoPrinter* AquaSalInstance::CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo, ImplJobSetup* pSetupData ) { + // #i113170# may not be the main thread if called from UNO API + SalData::ensureThreadAutoreleasePool(); + SalInfoPrinter* pNewInfoPrinter = NULL; if( pQueueInfo ) { @@ -1016,6 +1037,9 @@ SalInfoPrinter* AquaSalInstance::CreateInfoPrinter( SalPrinterQueueInfo* pQueueI void AquaSalInstance::DestroyInfoPrinter( SalInfoPrinter* pPrinter ) { + // #i113170# may not be the main thread if called from UNO API + SalData::ensureThreadAutoreleasePool(); + delete pPrinter; } |