summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2014-12-10 18:24:23 +0100
committerStephan Bergmann <sbergman@redhat.com>2014-12-10 18:24:23 +0100
commit55b68ad017d61f2fd4a3408632007880aabd05fe (patch)
tree904169ac3e8b6c064440b7e0f710db7a3f689543 /vcl
parent4de09a9efdb62cf90ce18662852e556cf7148e14 (diff)
Instantiate ImplSVData on demand
Change-Id: I661949a8635a2ed1a1efda77ced48a0fa9f6722e
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/svdata.hxx7
-rw-r--r--vcl/source/app/svapp.cxx3
-rw-r--r--vcl/source/app/svdata.cxx20
-rw-r--r--vcl/source/app/svmain.cxx3
-rw-r--r--vcl/source/helper/lazydelete.cxx5
5 files changed, 10 insertions, 28 deletions
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
index 5fb496be3d6a..683f40d908fb 100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@ -300,6 +300,8 @@ struct BlendFrameCache
struct ImplSVData
{
+ ImplSVData();
+
SalData* mpSalData;
SalInstance* mpDefInst; // Default SalInstance
Application* mpApp; // pApp
@@ -339,9 +341,7 @@ struct ImplSVData
Link maDeInitHook;
};
-void ImplInitSVData();
void ImplDeInitSVData();
-void ImplDestroySVData();
VCL_PLUGIN_PUBLIC vcl::Window* ImplGetDefaultWindow();
VCL_PLUGIN_PUBLIC ResMgr* ImplGetResMgr();
VCL_PLUGIN_PUBLIC ResId VclResId( sal_Int32 nId ); // throws std::bad_alloc if no res mgr
@@ -357,8 +357,7 @@ void ImplFreeEventHookData();
bool ImplCallPreNotify( NotifyEvent& rEvt );
-extern VCL_PLUGIN_PUBLIC ImplSVData* pImplSVData;
-inline ImplSVData* ImplGetSVData() { return pImplSVData; }
+VCL_PLUGIN_PUBLIC ImplSVData* ImplGetSVData();
VCL_PLUGIN_PUBLIC void ImplHideSplash();
bool ImplInitAccessBridge();
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index 98b74540dd31..f7a696f760d5 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -194,8 +194,6 @@ Application::Application()
OUString aVar("LIBO_VERSION"), aValue(LIBO_VERSION_DOTTED);
osl_setEnvironment(aVar.pData, aValue.pData);
- if( ! ImplGetSVData() )
- ImplInitSVData();
ImplGetSVData()->mpApp = this;
InitSalData();
}
@@ -205,7 +203,6 @@ Application::~Application()
ImplDeInitSVData();
DeInitSalData();
ImplGetSVData()->mpApp = NULL;
- ImplDestroySVData();
}
int Application::Main()
diff --git a/vcl/source/app/svdata.cxx b/vcl/source/app/svdata.cxx
index 59b2d23cd2bc..c539a7637866 100644
--- a/vcl/source/app/svdata.cxx
+++ b/vcl/source/app/svdata.cxx
@@ -64,8 +64,9 @@ namespace
public rtl::Static<ImplSVData, private_aImplSVData> {};
}
-// static SV-Data
-ImplSVData* pImplSVData = NULL;
+ImplSVData* ImplGetSVData() {
+ return &private_aImplSVData::get();
+}
SalSystem* ImplGetSalSystem()
{
@@ -75,14 +76,12 @@ SalSystem* ImplGetSalSystem()
return pSVData->mpSalSystem;
}
-void ImplInitSVData()
+ImplSVData::ImplSVData()
{
- pImplSVData = &private_aImplSVData::get();
-
// init global instance data
- memset( pImplSVData, 0, sizeof( ImplSVData ) );
- pImplSVData->maHelpData.mbAutoHelpId = true;
- pImplSVData->maNWFData.maMenuBarHighlightTextColor = Color( COL_TRANSPARENT );
+ memset( this, 0, sizeof( ImplSVData ) );
+ maHelpData.mbAutoHelpId = true;
+ maNWFData.maMenuBarHighlightTextColor = Color( COL_TRANSPARENT );
}
void ImplDeInitSVData()
@@ -104,11 +103,6 @@ void ImplDeInitSVData()
delete pSVData->mpPaperNames, pSVData->mpPaperNames = NULL;
}
-void ImplDestroySVData()
-{
- pImplSVData = NULL;
-}
-
vcl::Window* ImplGetDefaultWindow()
{
ImplSVData* pSVData = ImplGetSVData();
diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx
index c1456ad8d46d..7636738abbc6 100644
--- a/vcl/source/app/svmain.cxx
+++ b/vcl/source/app/svmain.cxx
@@ -240,9 +240,6 @@ bool InitVCL()
EmbeddedFontsHelper::clearTemporaryFontFiles();
- if( ! ImplGetSVData() )
- ImplInitSVData();
-
if( !ImplGetSVData()->mpApp )
{
pOwnSvApp = new Application();
diff --git a/vcl/source/helper/lazydelete.cxx b/vcl/source/helper/lazydelete.cxx
index 7ce8d1a56c11..45ea7e091820 100644
--- a/vcl/source/helper/lazydelete.cxx
+++ b/vcl/source/helper/lazydelete.cxx
@@ -80,11 +80,6 @@ DeleteOnDeinitBase::~DeleteOnDeinitBase()
void DeleteOnDeinitBase::addDeinitContainer( DeleteOnDeinitBase* i_pContainer )
{
ImplSVData* pSVData = ImplGetSVData();
- if( ! pSVData )
- {
- ImplInitSVData();
- pSVData = ImplGetSVData();
- }
DBG_ASSERT( ! pSVData->mbDeInit, "DeleteOnDeinit added after DeiInitVCL !" );
if( pSVData->mbDeInit )