diff options
author | Michael Meeks <michael.meeks@suse.com> | 2011-09-29 14:45:58 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@suse.com> | 2011-10-25 13:41:47 +0100 |
commit | 6ff506e6e92719049c6f42c8e5327ac16954ecb0 (patch) | |
tree | 2aac58f86b553ad5d9af5c32c3eb1cb30f429460 /vcl/generic | |
parent | 08fb22932015cc0d57fa1dbe422e4109cf8be071 (diff) |
generic: merge me with last commit please ... - more work
Diffstat (limited to 'vcl/generic')
-rw-r--r-- | vcl/generic/app/geninst.cxx | 134 | ||||
-rw-r--r-- | vcl/generic/fontmanager/fontmanager.cxx | 23 | ||||
-rw-r--r-- | vcl/generic/fontmanager/fontsubst.cxx (renamed from vcl/generic/print/fontsubst.cxx) | 21 | ||||
-rw-r--r-- | vcl/generic/print/genprnpsp.cxx | 28 | ||||
-rw-r--r-- | vcl/generic/print/pspgraphics.cxx | 2 |
5 files changed, 171 insertions, 37 deletions
diff --git a/vcl/generic/app/geninst.cxx b/vcl/generic/app/geninst.cxx new file mode 100644 index 000000000000..a4127d32ba95 --- /dev/null +++ b/vcl/generic/app/geninst.cxx @@ -0,0 +1,134 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_vcl.hxx" + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> + +#include "osl/module.hxx" +#include "tools/solarmutex.hxx" + +#include "generic/geninst.h" + +// ------------------------------------------------------------------------- +// +// SalYieldMutex +// +// ------------------------------------------------------------------------- + +SalYieldMutex::SalYieldMutex() +{ + mnCount = 0; + mnThreadId = 0; + ::tools::SolarMutex::SetSolarMutex( this ); +} + +void SalYieldMutex::acquire() +{ + SolarMutexObject::acquire(); + mnThreadId = osl::Thread::getCurrentIdentifier(); + mnCount++; +} + +void SalYieldMutex::release() +{ + if ( mnThreadId == osl::Thread::getCurrentIdentifier() ) + { + if ( mnCount == 1 ) + mnThreadId = 0; + mnCount--; + } + SolarMutexObject::release(); +} + +sal_Bool SalYieldMutex::tryToAcquire() +{ + if ( SolarMutexObject::tryToAcquire() ) + { + mnThreadId = osl::Thread::getCurrentIdentifier(); + mnCount++; + return sal_True; + } + else + return sal_False; +} + +osl::SolarMutex* SalGenericInstance::GetYieldMutex() +{ + return mpSalYieldMutex; +} + +sal_uLong SalGenericInstance::ReleaseYieldMutex() +{ + SalYieldMutex* pYieldMutex = mpSalYieldMutex; + if ( pYieldMutex->GetThreadId() == + osl::Thread::getCurrentIdentifier() ) + { + sal_uLong nCount = pYieldMutex->GetAcquireCount(); + sal_uLong n = nCount; + while ( n ) + { + pYieldMutex->release(); + n--; + } + + return nCount; + } + else + return 0; +} + +void SalGenericInstance::AcquireYieldMutex( sal_uLong nCount ) +{ + SalYieldMutex* pYieldMutex = mpSalYieldMutex; + while ( nCount ) + { + pYieldMutex->acquire(); + nCount--; + } +} + +bool SalGenericInstance::CheckYieldMutex() +{ + bool bRet = true; + + SalYieldMutex* pYieldMutex = mpSalYieldMutex; + if ( pYieldMutex->GetThreadId() != osl::Thread::getCurrentIdentifier() ) + bRet = false; + + return bRet; +} + +SalGenericInstance::~SalGenericInstance() +{ + ::tools::SolarMutex::SetSolarMutex( 0 ); + delete mpSalYieldMutex; +} diff --git a/vcl/generic/fontmanager/fontmanager.cxx b/vcl/generic/fontmanager/fontmanager.cxx index 80cddeec3317..3d95034160e8 100644 --- a/vcl/generic/fontmanager/fontmanager.cxx +++ b/vcl/generic/fontmanager/fontmanager.cxx @@ -41,7 +41,7 @@ #include "fontsubset.hxx" #include "impfont.hxx" #include "svdata.hxx" -#include "salinst.hxx" +#include "generic/geninst.h" #include "vcl/fontmanager.hxx" #include "vcl/strhelper.hxx" #include "vcl/ppdparser.hxx" @@ -2100,28 +2100,9 @@ void PrintFontManager::initFontsAlias() } } -// code stolen from vcl's RegisterFontSubstitutors() -// TODO: use that method once psprint gets merged into vcl static bool AreFCSubstitutionsEnabled() { - // init font substitution defaults - int nDisableBits = 0; -#ifdef SOLARIS - // TODO: check the OS version and fc-data maintenance level - nDisableBits = 1; // disable "font fallback" here on default -#endif - // apply the environment variable if any - const char* pEnvStr = ::getenv( "SAL_DISABLE_FC_SUBST" ); - if( pEnvStr ) - { - // - if( (*pEnvStr >= '0') && (*pEnvStr <= '9') ) - nDisableBits = (*pEnvStr - '0'); - else - nDisableBits = ~0U; // no specific bits set: disable all - } - - return ((nDisableBits & 3) == 0); + return (SalGenericInstance::FetchFontSubstitutionFlags() & 3) == 0; } void PrintFontManager::initialize() diff --git a/vcl/generic/print/fontsubst.cxx b/vcl/generic/fontmanager/fontsubst.cxx index 5c0dff6f25be..2ddcb5cb835d 100644 --- a/vcl/generic/print/fontsubst.cxx +++ b/vcl/generic/fontmanager/fontsubst.cxx @@ -64,7 +64,26 @@ public: bool FindFontSubstitute( ImplFontSelectData&, OUString& rMissingCodes ) const; }; -void RegisterFontSubstitutors( ImplDevFontList* pList ) +int SalGenericInstance::FetchFontSubstitutionFlags() +{ + // init font substitution defaults + int nDisableBits = 0; +#ifdef SOLARIS + nDisableBits = 1; // disable "font fallback" here on default +#endif + // apply the environment variable if any + const char* pEnvStr = ::getenv( "SAL_DISABLE_FC_SUBST" ); + if( pEnvStr ) + { + if( (*pEnvStr >= '0') && (*pEnvStr <= '9') ) + nDisableBits = (*pEnvStr - '0'); + else + nDisableBits = ~0U; // no specific bits set: disable all + } + return nDisableBits; +} + +void SalGenericInstance::RegisterFontSubstitutors( ImplDevFontList* pList ) { // init font substitution defaults int nDisableBits = 0; diff --git a/vcl/generic/print/genprnpsp.cxx b/vcl/generic/print/genprnpsp.cxx index c0b88fe001b7..06e29a4d74c6 100644 --- a/vcl/generic/print/genprnpsp.cxx +++ b/vcl/generic/print/genprnpsp.cxx @@ -382,7 +382,7 @@ static bool createPdf( const String& rToFile, const String& rFromFile, const Str * SalInstance */ -SalInfoPrinter* GenericInstance::CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo, +SalInfoPrinter* SalGenericInstance::CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo, ImplJobSetup* pJobSetup ) { mbPrinterInit = true; @@ -421,12 +421,12 @@ SalInfoPrinter* GenericInstance::CreateInfoPrinter( SalPrinterQueueInfo* pQueueI return pPrinter; } -void GenericInstance::DestroyInfoPrinter( SalInfoPrinter* pPrinter ) +void SalGenericInstance::DestroyInfoPrinter( SalInfoPrinter* pPrinter ) { delete pPrinter; } -SalPrinter* GenericInstance::CreatePrinter( SalInfoPrinter* pInfoPrinter ) +SalPrinter* SalGenericInstance::CreatePrinter( SalInfoPrinter* pInfoPrinter ) { mbPrinterInit = true; // create and initialize SalPrinter @@ -436,12 +436,12 @@ SalPrinter* GenericInstance::CreatePrinter( SalInfoPrinter* pInfoPrinter ) return pPrinter; } -void GenericInstance::DestroyPrinter( SalPrinter* pPrinter ) +void SalGenericInstance::DestroyPrinter( SalPrinter* pPrinter ) { delete pPrinter; } -void GenericInstance::GetPrinterQueueInfo( ImplPrnQueueList* pList ) +void SalGenericInstance::GetPrinterQueueInfo( ImplPrnQueueList* pList ) { mbPrinterInit = true; PrinterInfoManager& rManager( PrinterInfoManager::get() ); @@ -480,17 +480,17 @@ void GenericInstance::GetPrinterQueueInfo( ImplPrnQueueList* pList ) } } -void GenericInstance::DeletePrinterQueueInfo( SalPrinterQueueInfo* pInfo ) +void SalGenericInstance::DeletePrinterQueueInfo( SalPrinterQueueInfo* pInfo ) { delete pInfo; } -void GenericInstance::GetPrinterQueueState( SalPrinterQueueInfo* ) +void SalGenericInstance::GetPrinterQueueState( SalPrinterQueueInfo* ) { mbPrinterInit = true; } -String GenericInstance::GetDefaultPrinter() +String SalGenericInstance::GetDefaultPrinter() { mbPrinterInit = true; PrinterInfoManager& rManager( PrinterInfoManager::get() ); @@ -1330,7 +1330,7 @@ class PrinterUpdate static void doUpdate(); DECL_STATIC_LINK( PrinterUpdate, UpdateTimerHdl, void* ); public: - static void update(GenericInstance &rInstance); + static void update(SalGenericInstance &rInstance); static void jobStarted() { nActiveJobs++; } static void jobEnded(); }; @@ -1341,7 +1341,7 @@ int PrinterUpdate::nActiveJobs = 0; void PrinterUpdate::doUpdate() { ::psp::PrinterInfoManager& rManager( ::psp::PrinterInfoManager::get() ); - GenericInstance *pInst = static_cast<GenericInstance *>( GetSalData()->m_pInstance ); + SalGenericInstance *pInst = static_cast<SalGenericInstance *>( GetSalData()->m_pInstance ); if( pInst && rManager.checkPrintersChanged( false ) ) pInst->PostPrintersChanged(); } @@ -1362,7 +1362,7 @@ IMPL_STATIC_LINK_NOINSTANCE( PrinterUpdate, UpdateTimerHdl, void*, EMPTYARG ) return 0; } -void PrinterUpdate::update(GenericInstance &rInstance) +void PrinterUpdate::update(SalGenericInstance &rInstance) { if( Application::GetSettings().GetMiscSettings().GetDisablePrinting() ) return; @@ -1385,12 +1385,12 @@ void PrinterUpdate::update(GenericInstance &rInstance) } } -void GenericInstance::updatePrinterUpdate() +void SalGenericInstance::updatePrinterUpdate() { PrinterUpdate::update(*this); } -void GenericInstance::jobStartedPrinterUpdate() +void SalGenericInstance::jobStartedPrinterUpdate() { PrinterUpdate::jobStarted(); } @@ -1410,7 +1410,7 @@ void PrinterUpdate::jobEnded() } } -void GenericInstance::jobEndedPrinterUpdate() +void SalGenericInstance::jobEndedPrinterUpdate() { PrinterUpdate::jobEnded(); } diff --git a/vcl/generic/print/pspgraphics.cxx b/vcl/generic/print/pspgraphics.cxx index c99ae54b4ed5..7e11aeea616d 100644 --- a/vcl/generic/print/pspgraphics.cxx +++ b/vcl/generic/print/pspgraphics.cxx @@ -877,7 +877,7 @@ void PspGraphics::GetDevFontList( ImplDevFontList *pList ) // register platform specific font substitutions if available if( rMgr.hasFontconfig() ) - GenericInstance::RegisterFontSubstitutors( pList ); + SalGenericInstance::RegisterFontSubstitutors( pList ); } void PspGraphics::GetDevFontSubstList( OutputDevice* pOutDev ) |