summaryrefslogtreecommitdiff
path: root/vcl/unx/inc/saldata.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/unx/inc/saldata.hxx')
-rw-r--r--vcl/unx/inc/saldata.hxx133
1 files changed, 133 insertions, 0 deletions
diff --git a/vcl/unx/inc/saldata.hxx b/vcl/unx/inc/saldata.hxx
new file mode 100644
index 000000000000..4164a0fc7c1d
--- /dev/null
+++ b/vcl/unx/inc/saldata.hxx
@@ -0,0 +1,133 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * 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 _SV_SALDATA_HXX
+#define _SV_SALDATA_HXX
+
+// -=-= includes -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+#include <signal.h>
+#include <salstd.hxx>
+#include <vcl/salframe.hxx>
+#include <salinst.h>
+#include <vcl/saldatabasic.hxx>
+#include <osl/module.h>
+#include <vcl/dllapi.h>
+
+// -=-= forwards -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+class SalXLib;
+class SalDisplay;
+class SalPrinter;
+
+// -=-= typedefs -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+DECLARE_LIST( SalDisplays, SalDisplay* )
+
+#if defined SCO || defined LINUX || defined NETBSD || defined AIX || \
+ defined HPUX || defined FREEBSD || defined OPENBSD
+#include <pthread.h>
+#else
+typedef unsigned int pthread_t;
+#endif
+
+// -=-= SalData =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+class VCL_DLLPUBLIC X11SalData : public SalData
+{
+protected:
+ BOOL bNoExceptions_;
+ SalXLib *pXLib_;
+ SalDisplay *m_pSalDisplay;
+ pthread_t hMainThread_;
+ rtl::OUString maLocalHostName;
+
+public:
+ X11SalData();
+ virtual ~X11SalData();
+
+ virtual void Init();
+ virtual void initNWF();
+ virtual void deInitNWF();
+
+ inline void XError( Display *pDisplay, XErrorEvent *pEvent ) const;
+
+ SalDisplay* GetDisplay() const
+ { return m_pSalDisplay; }
+ void SetSalDisplay( SalDisplay* pDisplay )
+ { m_pSalDisplay = pDisplay; }
+
+ void DeleteDisplay(); // for shutdown
+
+ inline SalXLib* GetLib() const { return pXLib_; }
+ inline pthread_t GetMainThread() const { return hMainThread_; }
+
+ void StartTimer( ULONG nMS );
+ inline void StopTimer();
+ void Timeout() const;
+
+ const rtl::OUString& GetLocalHostName() const
+ { return maLocalHostName; }
+
+ static int XErrorHdl( Display*, XErrorEvent* );
+ static int XIOErrorHdl( Display* );
+
+ // set helper functions to set class and res name in W_CLASS hint
+ static const char* getFrameResName();
+ static const char* getFrameClassName();
+ static rtl::OString getFrameResName( SalExtStyle nStyle );
+
+};
+
+inline X11SalData* GetX11SalData()
+{ return (X11SalData*)ImplGetSVData()->mpSalData; }
+
+
+#ifdef _SV_SALDISP_HXX
+inline void X11SalData::XError( Display *pDisplay, XErrorEvent *pEvent ) const
+{ pXLib_->XError( pDisplay, pEvent ); }
+#endif
+
+class YieldMutexReleaser
+{
+ ULONG m_nYieldCount;
+public:
+ inline YieldMutexReleaser();
+ inline ~YieldMutexReleaser();
+};
+
+inline YieldMutexReleaser::YieldMutexReleaser()
+{
+ m_nYieldCount = GetSalData()->m_pInstance->ReleaseYieldMutex();
+}
+
+inline YieldMutexReleaser::~YieldMutexReleaser()
+{
+ GetSalData()->m_pInstance->AcquireYieldMutex( m_nYieldCount );
+}
+
+#endif // _SV_SALDATA_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */