9e18c9ee07
2009-09-22 21:19:24 +0200 cmc r276365 : #i100000# that's the most plausible explanation, -D$(CVER) is needed by scp2 under windows 2009-09-19 16:10:36 +0200 cmc r276303 : #i100000# revert this for no partically good reason 2009-09-18 14:16:47 +0200 cmc r276279 : remove extra build depend 2009-09-18 08:56:15 +0200 cmc r276265 : #i100000# rerun autoconf 2009-09-17 14:59:38 +0200 cmc r276245 : CWS-TOOLING: rebase CWS cmcfixes62 to trunk@276192 (milestone: DEV300:m59) 2009-09-10 16:40:49 +0200 pl r276041 : fix warning 2009-09-10 11:34:55 +0200 pl r276026 : disable warning from system header 2009-09-09 19:30:45 +0200 pl r276013 : use osl_getAsciiFunctionSymbol instead of strange cast 2009-09-09 19:25:32 +0200 pl r276012 : add some casting hacks to make compile on solaris cc 2009-09-09 19:10:48 +0200 pl r276009 : add missing Configure option for solaris sparce 32bit 2009-09-09 18:37:05 +0200 pl r276008 : merge fix for #i104525# into moved code 2009-09-07 13:28:08 +0200 cmc r275894 : CWS-TOOLING: rebase CWS cmcfixes62 to trunk@275801 (milestone: DEV300:m57) 2009-08-28 12:36:27 +0200 cmc r275523 : CWS-TOOLING: rebase CWS cmcfixes62 to trunk@275331 (milestone: DEV300:m56) 2009-08-26 12:56:18 +0200 cmc r275413 : #i104088# use the right headers in the right place 2009-08-25 17:07:50 +0200 cmc r275372 : #i104500# make openssl build on linux that isn't x86 or x86_64 2009-08-25 13:08:48 +0200 cmc r275347 : #i89237# pretty picswitch up 2009-08-25 10:58:09 +0200 cmc r275342 : #i104489# remove last unused code in starmath 2009-08-25 10:23:33 +0200 cmc r275338 : #i104088# clean up the define post-move 2009-08-24 13:46:57 +0200 cmc r275310 : #i104088# 64bit odbc api changes 2009-08-24 13:42:52 +0200 cmc r275309 : #i89237# unify linux platform mks under a generic parent 2009-08-24 13:19:52 +0200 cmc r275307 : #i104455# remove unused code 2009-08-24 13:10:56 +0200 cmc r275306 : #i104088# 64bit odbc api changes 2009-08-24 10:07:50 +0200 cmc r275293 : #i104306# move recent-used to vcl 2009-08-24 09:32:08 +0200 cmc r275291 : #i104306# move recent-used to vcl 2009-08-23 22:01:07 +0200 cmc r275286 : #i104306# move recently-used to vcl 2009-08-22 15:25:25 +0200 cmc r275285 : #i104088# 64bit odbc api changes 2009-08-21 17:52:40 +0200 cmc r275268 : #i104306# move recently-used to vcl 2009-08-21 14:38:26 +0200 cmc r275257 : #i104408 make these headers ready for c++0x 2009-08-21 14:20:19 +0200 cmc r275251 : #i104406# avoid overlapping strcpy to avoid bustage on recent toolchains 2009-08-21 14:14:25 +0200 cmc r275250 : #i104385# silence 64bit warnings
200 lines
7 KiB
C++
200 lines
7 KiB
C++
/*************************************************************************
|
|
*
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* Copyright 2008 by Sun Microsystems, Inc.
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* $RCSfile: svpinst.hxx,v $
|
|
* $Revision: 1.6.116.1 $
|
|
*
|
|
* 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.
|
|
*
|
|
************************************************************************/
|
|
|
|
#ifndef _SVP_SALINST_HXX
|
|
#define _SVP_SALINST_HXX
|
|
|
|
#include <vcl/salinst.hxx>
|
|
#include <vcl/salwtype.hxx>
|
|
#include <vcl/saltimer.hxx>
|
|
#include <vos/mutex.hxx>
|
|
#include <vos/thread.hxx>
|
|
|
|
#include <list>
|
|
|
|
#include <time.h> // timeval
|
|
|
|
#define VIRTUAL_DESKTOP_WIDTH 1024
|
|
#define VIRTUAL_DESKTOP_HEIGHT 768
|
|
#define VIRTUAL_DESKTOP_DEPTH 24
|
|
|
|
// -------------------------------------------------------------------------
|
|
// SalYieldMutex
|
|
// -------------------------------------------------------------------------
|
|
|
|
class SvpSalYieldMutex : public NAMESPACE_VOS(OMutex)
|
|
{
|
|
protected:
|
|
ULONG mnCount;
|
|
NAMESPACE_VOS(OThread)::TThreadIdentifier mnThreadId;
|
|
|
|
public:
|
|
SvpSalYieldMutex();
|
|
|
|
virtual void acquire();
|
|
virtual void release();
|
|
virtual sal_Bool tryToAcquire();
|
|
|
|
ULONG GetAcquireCount() const { return mnCount; }
|
|
NAMESPACE_VOS(OThread)::TThreadIdentifier GetThreadId() const { return mnThreadId; }
|
|
};
|
|
|
|
// ---------------
|
|
// - SalTimer -
|
|
// ---------------
|
|
class SvpSalInstance;
|
|
class SvpSalTimer : public SalTimer
|
|
{
|
|
SvpSalInstance* m_pInstance;
|
|
public:
|
|
SvpSalTimer( SvpSalInstance* pInstance ) : m_pInstance( pInstance ) {}
|
|
virtual ~SvpSalTimer();
|
|
|
|
// overload all pure virtual methods
|
|
virtual void Start( ULONG nMS );
|
|
virtual void Stop();
|
|
};
|
|
|
|
// ---------------
|
|
// - SalInstance -
|
|
// ---------------
|
|
class SvpSalFrame;
|
|
class SvpSalInstance : public SalInstance
|
|
{
|
|
timeval m_aTimeout;
|
|
ULONG m_nTimeoutMS;
|
|
int m_pTimeoutFDS[2];
|
|
SvpSalYieldMutex m_aYieldMutex;
|
|
|
|
// internal event queue
|
|
struct SalUserEvent
|
|
{
|
|
const SalFrame* m_pFrame;
|
|
void* m_pData;
|
|
USHORT m_nEvent;
|
|
|
|
SalUserEvent( const SalFrame* pFrame, void* pData, USHORT nEvent = SALEVENT_USEREVENT )
|
|
: m_pFrame( pFrame ),
|
|
m_pData( pData ),
|
|
m_nEvent( nEvent )
|
|
{}
|
|
};
|
|
|
|
oslMutex m_aEventGuard;
|
|
std::list< SalUserEvent > m_aUserEvents;
|
|
|
|
std::list< SalFrame* > m_aFrames;
|
|
public:
|
|
static SvpSalInstance* s_pDefaultInstance;
|
|
|
|
SvpSalInstance();
|
|
virtual ~SvpSalInstance();
|
|
|
|
void PostEvent( const SalFrame* pFrame, void* pData, USHORT nEvent );
|
|
void CancelEvent( const SalFrame* pFrame, void* pData, USHORT nEvent );
|
|
|
|
void StartTimer( ULONG nMS );
|
|
void StopTimer();
|
|
void Wakeup();
|
|
|
|
void registerFrame( SalFrame* pFrame ) { m_aFrames.push_back( pFrame ); }
|
|
void deregisterFrame( SalFrame* pFrame );
|
|
const std::list< SalFrame* >& getFrames() const { return m_aFrames; }
|
|
|
|
bool CheckTimeout( bool bExecuteTimers = true );
|
|
|
|
// Frame
|
|
virtual SalFrame* CreateChildFrame( SystemParentData* pParent, ULONG nStyle );
|
|
virtual SalFrame* CreateFrame( SalFrame* pParent, ULONG nStyle );
|
|
virtual void DestroyFrame( SalFrame* pFrame );
|
|
|
|
// Object (System Child Window)
|
|
virtual SalObject* CreateObject( SalFrame* pParent, SystemWindowData* pWindowData, BOOL bShow = TRUE );
|
|
virtual void DestroyObject( SalObject* pObject );
|
|
|
|
// VirtualDevice
|
|
// nDX and nDY in Pixel
|
|
// nBitCount: 0 == Default(=as window) / 1 == Mono
|
|
// pData allows for using a system dependent graphics or device context
|
|
virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics,
|
|
long nDX, long nDY,
|
|
USHORT nBitCount, const SystemGraphicsData *pData = NULL );
|
|
virtual void DestroyVirtualDevice( SalVirtualDevice* pDevice );
|
|
|
|
// Printer
|
|
// pSetupData->mpDriverData can be 0
|
|
// pSetupData must be updatet with the current
|
|
// JobSetup
|
|
virtual SalInfoPrinter* CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo,
|
|
ImplJobSetup* pSetupData );
|
|
virtual void DestroyInfoPrinter( SalInfoPrinter* pPrinter );
|
|
virtual SalPrinter* CreatePrinter( SalInfoPrinter* pInfoPrinter );
|
|
virtual void DestroyPrinter( SalPrinter* pPrinter );
|
|
|
|
virtual void GetPrinterQueueInfo( ImplPrnQueueList* pList );
|
|
virtual void GetPrinterQueueState( SalPrinterQueueInfo* pInfo );
|
|
virtual void DeletePrinterQueueInfo( SalPrinterQueueInfo* pInfo );
|
|
virtual String GetDefaultPrinter();
|
|
|
|
// SalTimer
|
|
virtual SalTimer* CreateSalTimer();
|
|
// SalI18NImeStatus
|
|
virtual SalI18NImeStatus* CreateI18NImeStatus();
|
|
// SalSystem
|
|
virtual SalSystem* CreateSalSystem();
|
|
// SalBitmap
|
|
virtual SalBitmap* CreateSalBitmap();
|
|
|
|
// YieldMutex
|
|
virtual vos::IMutex* GetYieldMutex();
|
|
virtual ULONG ReleaseYieldMutex();
|
|
virtual void AcquireYieldMutex( ULONG nCount );
|
|
|
|
// wait next event and dispatch
|
|
// must returned by UserEvent (SalFrame::PostEvent)
|
|
// and timer
|
|
virtual void Yield( bool bWait, bool bHandleAllCurrentEvents );
|
|
virtual bool AnyInput( USHORT nType );
|
|
|
|
// Menues
|
|
virtual SalMenu* CreateMenu( BOOL bMenuBar );
|
|
virtual void DestroyMenu( SalMenu* pMenu);
|
|
virtual SalMenuItem* CreateMenuItem( const SalItemParams* pItemData );
|
|
virtual void DestroyMenuItem( SalMenuItem* pItem );
|
|
|
|
// may return NULL to disable session management
|
|
virtual SalSession* CreateSalSession();
|
|
|
|
virtual void* GetConnectionIdentifier( ConnectionIdentifierType& rReturnedType, int& rReturnedBytes );
|
|
|
|
virtual void AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType);
|
|
};
|
|
|
|
#endif // _SV_SALINST_HXX
|