tdf#103927: Share single standard VirtualDevice instance.
To avoid creating excessive amounts of VirtualDevice instances. Also, since we now have VclPtr, we shouldn't need this bOwnerOfRefDev flag. Change-Id: I97a6f553a178b32bc173b83a6716185d126f97e1 Reviewed-on: https://gerrit.libreoffice.org/33508 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Kohei Yoshida <libreoffice@kohei.us>
This commit is contained in:
committed by
Kohei Yoshida
parent
326729ce54
commit
b41186a2fc
@@ -70,6 +70,7 @@
|
|||||||
#include <editeng/forbiddencharacterstable.hxx>
|
#include <editeng/forbiddencharacterstable.hxx>
|
||||||
#include <editeng/justifyitem.hxx>
|
#include <editeng/justifyitem.hxx>
|
||||||
#include <rtl/instance.hxx>
|
#include <rtl/instance.hxx>
|
||||||
|
#include <tools/mapunit.hxx>
|
||||||
|
|
||||||
using namespace ::com::sun::star;
|
using namespace ::com::sun::star;
|
||||||
|
|
||||||
@@ -83,9 +84,11 @@ EditDLL& EditDLL::Get()
|
|||||||
return theEditDLL::get();
|
return theEditDLL::get();
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalEditData::GlobalEditData()
|
GlobalEditData::GlobalEditData() :
|
||||||
|
ppDefItems(nullptr),
|
||||||
|
mpVirDev(VclPtr<VirtualDevice>::Create())
|
||||||
{
|
{
|
||||||
ppDefItems = nullptr;
|
mpVirDev->SetMapMode(MapUnit::MapTwip);
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalEditData::~GlobalEditData()
|
GlobalEditData::~GlobalEditData()
|
||||||
@@ -194,6 +197,11 @@ uno::Reference< linguistic2::XLanguageGuessing > const & GlobalEditData::GetLang
|
|||||||
return xLanguageGuesser;
|
return xLanguageGuesser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VclPtr<VirtualDevice> GlobalEditData::GetStdVirtualDevice()
|
||||||
|
{
|
||||||
|
return mpVirDev;
|
||||||
|
}
|
||||||
|
|
||||||
EditResId::EditResId(sal_uInt16 nId)
|
EditResId::EditResId(sal_uInt16 nId)
|
||||||
: ResId(nId, *EditDLL::GetResMgr())
|
: ResId(nId, *EditDLL::GetResMgr())
|
||||||
{
|
{
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include <rtl/ref.hxx>
|
#include <rtl/ref.hxx>
|
||||||
|
|
||||||
class SfxPoolItem;
|
class SfxPoolItem;
|
||||||
|
class VirtualDevice;
|
||||||
|
|
||||||
class GlobalEditData
|
class GlobalEditData
|
||||||
{
|
{
|
||||||
@@ -33,6 +34,7 @@ private:
|
|||||||
std::vector<SfxPoolItem*>* ppDefItems;
|
std::vector<SfxPoolItem*>* ppDefItems;
|
||||||
|
|
||||||
rtl::Reference<SvxForbiddenCharactersTable> xForbiddenCharsTable;
|
rtl::Reference<SvxForbiddenCharactersTable> xForbiddenCharsTable;
|
||||||
|
VclPtr<VirtualDevice> mpVirDev;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GlobalEditData();
|
GlobalEditData();
|
||||||
@@ -43,6 +45,8 @@ public:
|
|||||||
rtl::Reference<SvxForbiddenCharactersTable> const & GetForbiddenCharsTable();
|
rtl::Reference<SvxForbiddenCharactersTable> const & GetForbiddenCharsTable();
|
||||||
void SetForbiddenCharsTable( rtl::Reference<SvxForbiddenCharactersTable> const & xForbiddenChars ) { xForbiddenCharsTable = xForbiddenChars; }
|
void SetForbiddenCharsTable( rtl::Reference<SvxForbiddenCharactersTable> const & xForbiddenChars ) { xForbiddenCharsTable = xForbiddenChars; }
|
||||||
css::uno::Reference< css::linguistic2::XLanguageGuessing > const & GetLanguageGuesser();
|
css::uno::Reference< css::linguistic2::XLanguageGuessing > const & GetLanguageGuesser();
|
||||||
|
|
||||||
|
VclPtr<VirtualDevice> GetStdVirtualDevice();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INCLUDED_EDITENG_SOURCE_EDITENG_EERDLL2_HXX
|
#endif // INCLUDED_EDITENG_SOURCE_EDITENG_EERDLL2_HXX
|
||||||
|
@@ -513,7 +513,6 @@ private:
|
|||||||
bool bIsInUndo:1;
|
bool bIsInUndo:1;
|
||||||
bool bUpdate:1;
|
bool bUpdate:1;
|
||||||
bool bUndoEnabled:1;
|
bool bUndoEnabled:1;
|
||||||
bool bOwnerOfRefDev:1;
|
|
||||||
bool bDowning:1;
|
bool bDowning:1;
|
||||||
bool bUseAutoColor:1;
|
bool bUseAutoColor:1;
|
||||||
bool bForceAutoColor:1;
|
bool bForceAutoColor:1;
|
||||||
|
@@ -95,7 +95,6 @@ ImpEditEngine::ImpEditEngine( EditEngine* pEE, SfxItemPool* pItemPool ) :
|
|||||||
bIsInUndo(false),
|
bIsInUndo(false),
|
||||||
bUpdate(true),
|
bUpdate(true),
|
||||||
bUndoEnabled(true),
|
bUndoEnabled(true),
|
||||||
bOwnerOfRefDev(false),
|
|
||||||
bDowning(false),
|
bDowning(false),
|
||||||
bUseAutoColor(true),
|
bUseAutoColor(true),
|
||||||
bForceAutoColor(false),
|
bForceAutoColor(false),
|
||||||
@@ -184,26 +183,15 @@ ImpEditEngine::~ImpEditEngine()
|
|||||||
delete mpIMEInfos;
|
delete mpIMEInfos;
|
||||||
delete pColorConfig;
|
delete pColorConfig;
|
||||||
delete pCTLOptions;
|
delete pCTLOptions;
|
||||||
if ( bOwnerOfRefDev )
|
|
||||||
pRefDev.disposeAndClear();
|
|
||||||
delete pSpellInfo;
|
delete pSpellInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImpEditEngine::SetRefDevice( OutputDevice* pRef )
|
void ImpEditEngine::SetRefDevice( OutputDevice* pRef )
|
||||||
{
|
{
|
||||||
if ( bOwnerOfRefDev )
|
if (pRef)
|
||||||
pRefDev.disposeAndClear();
|
|
||||||
|
|
||||||
if ( !pRef )
|
|
||||||
{
|
|
||||||
pRefDev = VclPtr<VirtualDevice>::Create();
|
|
||||||
pRefDev->SetMapMode( MapUnit::MapTwip );
|
|
||||||
bOwnerOfRefDev = true;
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
pRefDev = pRef;
|
pRefDev = pRef;
|
||||||
bOwnerOfRefDev = false;
|
else
|
||||||
}
|
pRefDev = EditDLL::Get().GetGlobalData()->GetStdVirtualDevice();
|
||||||
|
|
||||||
nOnePixelInRef = (sal_uInt16)pRefDev->PixelToLogic( Size( 1, 0 ) ).Width();
|
nOnePixelInRef = (sal_uInt16)pRefDev->PixelToLogic( Size( 1, 0 ) ).Width();
|
||||||
|
|
||||||
@@ -219,13 +207,10 @@ void ImpEditEngine::SetRefMapMode( const MapMode& rMapMode )
|
|||||||
if ( GetRefDevice()->GetMapMode() == rMapMode )
|
if ( GetRefDevice()->GetMapMode() == rMapMode )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !bOwnerOfRefDev )
|
pRefDev = VclPtr<VirtualDevice>::Create();
|
||||||
{
|
pRefDev->SetMapMode( MapUnit::MapTwip );
|
||||||
pRefDev = VclPtr<VirtualDevice>::Create();
|
SetRefDevice( pRefDev );
|
||||||
pRefDev->SetMapMode( MapUnit::MapTwip );
|
|
||||||
SetRefDevice( pRefDev );
|
|
||||||
bOwnerOfRefDev = true;
|
|
||||||
}
|
|
||||||
pRefDev->SetMapMode( rMapMode );
|
pRefDev->SetMapMode( rMapMode );
|
||||||
nOnePixelInRef = (sal_uInt16)pRefDev->PixelToLogic( Size( 1, 0 ) ).Width();
|
nOnePixelInRef = (sal_uInt16)pRefDev->PixelToLogic( Size( 1, 0 ) ).Width();
|
||||||
if ( IsFormatted() )
|
if ( IsFormatted() )
|
||||||
|
Reference in New Issue
Block a user