Kaydet (Commit) 1bfd9b54 authored tarafından Michael Meeks's avatar Michael Meeks

generic: fix misc. initialization problems & simplify a little

üst 0dc6cb34
......@@ -43,20 +43,26 @@
#include <salframe.hxx>
#include <svdata.hxx>
#include <saldatabasic.hxx>
#include <generic/gendata.hxx>
#include <vcl/solarmutex.hxx>
// FIXME: split off into a separate, standalone module to aid linking
#ifndef GTK3_INCLUDED
class SvpSalData : public SalGenericData
{
public:
SvpSalData( SalInstance *pInstance ) : SalGenericData( SAL_DATA_SVP, pInstance ) { }
virtual void ErrorTrapPush() {}
virtual bool ErrorTrapPop( bool ) { return false; }
};
// plugin factory function
extern "C"
{
SAL_DLLPUBLIC_EXPORT SalInstance* create_SalInstance()
{
SvpSalInstance* pInstance = new SvpSalInstance( new SalYieldMutex() );
SalData* pSalData = new SalData();
pSalData->m_pInstance = pInstance;
SetSalData( pSalData );
new SvpSalData( pInstance );
return pInstance;
}
}
......
......@@ -39,7 +39,7 @@ class SalDisplay;
class GtkSalDisplay;
enum SalGenericDataType { SAL_DATA_GTK, SAL_DATA_GTK3,
SAL_DATA_KDE3, SAL_DATA_KDE4,
SAL_DATA_UNX };
SAL_DATA_UNX, SAL_DATA_SVP };
class VCL_DLLPUBLIC SalGenericData : public SalData
{
......@@ -51,7 +51,7 @@ class VCL_DLLPUBLIC SalGenericData : public SalData
// for transient storage of unicode strings eg. 'u123' by input methods
rtl::OUString m_aUnicodeEntry;
public:
SalGenericData( SalGenericDataType t ) : SalData(), m_eType( t ), m_pDisplay( NULL ) {}
SalGenericData( SalGenericDataType t, SalInstance *pInstance ) : SalData(), m_eType( t ), m_pDisplay( NULL ) { m_pInstance = pInstance; SetSalData( this ); }
virtual ~SalGenericData() {}
virtual void Dispose() {}
......@@ -80,7 +80,7 @@ class VCL_DLLPUBLIC SalGenericData : public SalData
// Not the prettiest - but helpful for migrating old code ...
inline SalDisplay *GetSalDisplay() const
{
OSL_ASSERT( m_eType == SAL_DATA_UNX || m_eType == SAL_DATA_GTK );
OSL_ASSERT( m_eType != SAL_DATA_GTK3 );
return (SalDisplay *)GetDisplay();
}
inline GtkSalDisplay *GetGtkDisplay() const
......
......@@ -100,7 +100,7 @@ class GtkData : public SalGenericData
oslCondition m_aDispatchCondition;
public:
GtkData();
GtkData( SalInstance *pInstance );
virtual ~GtkData();
virtual void Init();
......
......@@ -36,7 +36,7 @@
class KDEData : public X11SalData
{
public:
KDEData() : X11SalData( SAL_DATA_KDE3 ) {}
KDEData( SalInstance *pInstance ) : X11SalData( SAL_DATA_KDE3, pInstance ) {}
virtual ~KDEData();
virtual void Init();
......
......@@ -76,7 +76,7 @@ protected:
pthread_t hMainThread_;
public:
X11SalData( SalGenericDataType t );
X11SalData( SalGenericDataType t, SalInstance *pInstance );
virtual ~X11SalData();
virtual void Init();
......
......@@ -236,11 +236,10 @@ static const char* XRequest[] = {
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#include <pthread.h>
X11SalData::X11SalData( SalGenericDataType t )
: SalGenericData( t )
X11SalData::X11SalData( SalGenericDataType t, SalInstance *pInstance )
: SalGenericData( t, pInstance )
{
pXLib_ = NULL;
m_pInstance = NULL;
m_pPlugin = NULL;
hMainThread_ = pthread_self();
......
......@@ -74,9 +74,8 @@ extern "C"
X11SalInstance* pInstance = new X11SalInstance( new SalYieldMutex() );
// initialize SalData
X11SalData *pSalData = new X11SalData( SAL_DATA_UNX );
SetSalData( pSalData );
pSalData->m_pInstance = pInstance;
X11SalData *pSalData = new X11SalData( SAL_DATA_UNX, pInstance );
pSalData->Init();
pInstance->SetLib( pSalData->GetLib() );
......@@ -168,7 +167,9 @@ bool X11SalInstance::AnyInput(sal_uInt16 nType)
bRet = aInput.bRet;
}
#if OSL_DEBUG_LEVEL > 1
fprintf( stderr, "AnyInput 0x%x = %s\n", nType, bRet ? "true" : "false" );
#endif
return bRet;
}
......
......@@ -537,11 +537,11 @@ int GtkSalDisplay::CaptureMouse( SalFrame* pSFrame )
* class GtkData *
**********************************************************************/
GtkData::GtkData()
GtkData::GtkData( SalInstance *pInstance )
#if GTK_CHECK_VERSION(3,0,0)
: SalGenericData( SAL_DATA_GTK3 )
: SalGenericData( SAL_DATA_GTK3, pInstance )
#else
: SalGenericData( SAL_DATA_GTK )
: SalGenericData( SAL_DATA_GTK, pInstance )
#endif
{
m_pUserEvent = NULL;
......
......@@ -189,9 +189,7 @@ extern "C"
#endif
// initialize SalData
GtkData *pSalData = new GtkData();
SetSalData( pSalData );
pSalData->m_pInstance = pInstance;
GtkData *pSalData = new GtkData( pInstance );
pSalData->Init();
pSalData->initNWF();
......
......@@ -254,10 +254,9 @@ extern "C" {
#endif
// initialize SalData
KDEData *pSalData = new KDEData();
SetSalData( pSalData );
pSalData->m_pInstance = pInstance;
KDEData *pSalData = new KDEData( pInstance );
pSalData->Init();
pInstance->SetLib( pSalData->GetLib() );
pSalData->initNWF();
return pInstance;
......
......@@ -34,7 +34,8 @@
class KDEData : public X11SalData
{
public:
KDEData() : X11SalData( SAL_DATA_KDE4 ) {}
KDEData( SalInstance *pInstance )
: X11SalData( SAL_DATA_KDE4, pInstance ) {}
virtual ~KDEData();
virtual void Init();
......
......@@ -97,11 +97,10 @@ extern "C" {
#endif
// initialize SalData
KDEData *salData = new KDEData();
SetSalData(salData);
salData->m_pInstance = pInstance;
KDEData *salData = new KDEData( pInstance );
salData->Init();
salData->initNWF();
pInstance->SetLib(salData->GetLib());
return pInstance;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment