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