diff options
author | Jan-Marek Glogowski <glogow@fbihome.de> | 2022-01-13 21:04:19 +0100 |
---|---|---|
committer | Jan-Marek Glogowski <glogow@fbihome.de> | 2022-01-14 16:13:04 +0100 |
commit | 7d990aafdc363b2a12b5db78637d7f3bef7780bd (patch) | |
tree | 3d32337824b6003769318510822110ba09351b9d | |
parent | 4bdf28b404f90236d93ce207671f755a71f28496 (diff) |
VCL drop m_pInstance from *nix SalData
AKA the "*nix SalData untangling" commit.
The original plan was to get rid of vcl/inc/saldatabasic.hxx and
even SalData for all the *nix backends. But after many backs and
forths, reinspecting the code and imagining the resulting code, I
decided against that plan. All these variants would have resulted
in reinterpret_cast calls, I wanted to prevent. And they would
have required larger renames for no benefit.
An other, related idea was to include all SalData implementations
in the vcl/inc/svdata.hxx header, but that seemed like an include
explosion, so was also dropped.
I tried to untangling iOS from using GenericUnixSalData, as it
doesn't use any of it's features. The new, minimal SalData should
be sufficient.
I'm leaving the easier drop of mpInstance from the Windows and
MacOSX backend as a minimal interesting EasyHack.
Change-Id: I5be01c1f42131a7e31cb30899392308e1e2de53b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128402
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
49 files changed, 154 insertions, 224 deletions
diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist index 308fa9fb9d46..b67a6f17ddb6 100644 --- a/solenv/clang-format/excludelist +++ b/solenv/clang-format/excludelist @@ -14412,7 +14412,6 @@ vcl/inc/quartz/salvd.h vcl/inc/quartz/utils.h vcl/inc/regband.hxx vcl/inc/salbmp.hxx -vcl/inc/saldatabasic.hxx vcl/inc/salframe.hxx vcl/inc/salgdi.hxx vcl/inc/salgdiimpl.hxx diff --git a/vcl/README.md b/vcl/README.md index 2aa78eb54f87..8aa1495ba775 100644 --- a/vcl/README.md +++ b/vcl/README.md @@ -55,9 +55,7 @@ VCL provides a graphical toolkit similar to gtk+, Qt, SWING etc. + How the platform abstraction works + InitVCL calls 'CreateSalInstance' - + this is implemented by the compiled-in platform backend - + it stores various bits of global state in the - 'SalData' (inc/saldatabasic.hxx) structure but: + + this is implemented by the compiled platform backends + the SalInstance vtable is the primary outward facing gateway API for platform backends + It is a factory for: @@ -72,6 +70,17 @@ LibreOffice (and OpenOffice). "svp" stands for "StarView Plugin". +## SalData implementations + +Each backend must provide an implementation of the SalData class. There is no +defined interface, so feel free to implement whatever suits your platform. + +If your platform does font handling based on Freetype and Fontconfig, it's +highly recommended to use GenericUnixSalData as the base class; there isn't +really much *nix stuff in it. + +Currently Windows, iOS and MacOSX have independent SalData implementations. + ## COM Threading The way COM is used in LO generally: diff --git a/vcl/android/androidinst.cxx b/vcl/android/androidinst.cxx index 73760c460be5..8e83dae0a8dd 100644 --- a/vcl/android/androidinst.cxx +++ b/vcl/android/androidinst.cxx @@ -36,10 +36,7 @@ AndroidSalInstance *AndroidSalInstance::getInstance() { if (!ImplGetSVData()) return NULL; - SvpSalData *pData = static_cast<SvpSalData *>(ImplGetSVData()->mpSalData); - if (!pData) - return NULL; - return static_cast<AndroidSalInstance *>(pData->m_pInstance); + return static_cast<AndroidSalInstance *>(GetSalInstance()); } AndroidSalInstance::AndroidSalInstance( std::unique_ptr<SalYieldMutex> pMutex ) @@ -161,7 +158,7 @@ extern "C" SalInstance *create_SalInstance() { LOGI("Android: CreateSalInstance!"); AndroidSalInstance* pInstance = new AndroidSalInstance( std::make_unique<SvpSalYieldMutex>() ); - new SvpSalData(pInstance); + new SvpSalData(); return pInstance; } diff --git a/vcl/headless/headlessinst.cxx b/vcl/headless/headlessinst.cxx index c2458756ba24..a1fa7a78b217 100644 --- a/vcl/headless/headlessinst.cxx +++ b/vcl/headless/headlessinst.cxx @@ -66,20 +66,11 @@ const OUString& SalGetDesktopEnvironment() return aEnv; } -SalData::SalData() - : m_pInstance(nullptr) -{ -} - -SalData::~SalData() -{ -} - // This is our main entry point: SalInstance *CreateSalInstance() { HeadlessSalInstance* pInstance = new HeadlessSalInstance(std::make_unique<SvpSalYieldMutex>()); - new SvpSalData(pInstance); + new SvpSalData(); pInstance->AcquireYieldMutex(); return pInstance; } diff --git a/vcl/headless/svpdata.cxx b/vcl/headless/svpdata.cxx index ab9fa5e22f0a..a5d17b007115 100644 --- a/vcl/headless/svpdata.cxx +++ b/vcl/headless/svpdata.cxx @@ -14,7 +14,7 @@ SalInstance* svp_create_SalInstance() { SvpSalInstance* pInstance = new SvpSalInstance( std::make_unique<SvpSalYieldMutex>() ); - new SvpSalData( pInstance ); + new SvpSalData(); return pInstance; } diff --git a/vcl/headless/svpinst.cxx b/vcl/headless/svpinst.cxx index 181e01782214..bf53dc24faf3 100644 --- a/vcl/headless/svpinst.cxx +++ b/vcl/headless/svpinst.cxx @@ -52,7 +52,6 @@ #include <salframe.hxx> #include <svdata.hxx> -#include <unx/gendata.hxx> // FIXME: remove when we re-work the svp mainloop #include <unx/salunxtime.h> #include <comphelper/lok.hxx> @@ -339,7 +338,7 @@ SvpSalYieldMutex::~SvpSalYieldMutex() void SvpSalYieldMutex::doAcquire(sal_uInt32 const nLockCount) { - SvpSalInstance *const pInst = static_cast<SvpSalInstance *>(GetSalData()->m_pInstance); + auto *const pInst = static_cast<SvpSalInstance*>(GetSalInstance()); if (pInst && pInst->IsMainThread()) { if (m_bNoYieldLock) @@ -386,7 +385,7 @@ void SvpSalYieldMutex::doAcquire(sal_uInt32 const nLockCount) sal_uInt32 SvpSalYieldMutex::doRelease(bool const bUnlockAll) { - SvpSalInstance *const pInst = static_cast<SvpSalInstance *>(GetSalData()->m_pInstance); + auto *const pInst = static_cast<SvpSalInstance*>(GetSalInstance()); if (pInst && pInst->IsMainThread()) { if (m_bNoYieldLock) @@ -420,7 +419,7 @@ sal_uInt32 SvpSalYieldMutex::doRelease(bool const bUnlockAll) bool SvpSalYieldMutex::IsCurrentThread() const { - if (GetSalData()->m_pInstance->IsMainThread() && m_bNoYieldLock) + if (GetSalInstance()->IsMainThread() && m_bNoYieldLock) return true; else return SalYieldMutex::IsCurrentThread(); diff --git a/vcl/headless/svpprn.cxx b/vcl/headless/svpprn.cxx index c50a01023824..a6b448af68d4 100644 --- a/vcl/headless/svpprn.cxx +++ b/vcl/headless/svpprn.cxx @@ -29,7 +29,7 @@ #include <jobset.h> #include <print.h> #include <salptype.hxx> -#include <saldatabasic.hxx> +#include <svdata.hxx> #include <unx/genpspgraphics.h> diff --git a/vcl/inc/headless/svpdata.hxx b/vcl/inc/headless/svpdata.hxx index bcffac25dd14..f995d7ef396f 100644 --- a/vcl/inc/headless/svpdata.hxx +++ b/vcl/inc/headless/svpdata.hxx @@ -14,8 +14,8 @@ class SvpSalData : public GenericUnixSalData { public: - explicit SvpSalData(SalInstance* pInstance) - : GenericUnixSalData(pInstance) + explicit SvpSalData() + : GenericUnixSalData() { } virtual void ErrorTrapPush() override {} diff --git a/vcl/inc/osx/saldata.hxx b/vcl/inc/osx/saldata.hxx index 378741a739d9..e201f45715c2 100644 --- a/vcl/inc/osx/saldata.hxx +++ b/vcl/inc/osx/saldata.hxx @@ -100,9 +100,6 @@ public: static NSStatusItem* getStatusItem(); }; -inline void SetSalData( SalData* pData ) { ImplGetSVData()->mpSalData = pData; } -inline SalData *GetSalData() { return ImplGetSVData()->mpSalData; } - bool ImplSalYieldMutexTryToAcquire(); void ImplSalYieldMutexRelease(); diff --git a/vcl/inc/qt5/QtData.hxx b/vcl/inc/qt5/QtData.hxx index 960126f0fde6..82cfecd57e33 100644 --- a/vcl/inc/qt5/QtData.hxx +++ b/vcl/inc/qt5/QtData.hxx @@ -33,7 +33,7 @@ class VCLPLUG_QT_PUBLIC QtData final : public GenericUnixSalData o3tl::enumarray<PointerStyle, std::unique_ptr<QCursor>> m_aCursors; public: - explicit QtData(SalInstance* pInstance); + explicit QtData(); virtual ~QtData() override; virtual void ErrorTrapPush() override; @@ -44,4 +44,6 @@ public: static bool noNativeControls(); }; +inline QtData* GetQtData() { return static_cast<QtData*>(GetSalData()); } + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/qt5/QtInstance.hxx b/vcl/inc/qt5/QtInstance.hxx index b02dd6234633..24629a36af8c 100644 --- a/vcl/inc/qt5/QtInstance.hxx +++ b/vcl/inc/qt5/QtInstance.hxx @@ -168,4 +168,6 @@ public: void* CreateGStreamerSink(const SystemChildWindow*) override; }; +inline QtInstance* GetQtInstance() { return static_cast<QtInstance*>(GetSalInstance()); } + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/saldatabasic.hxx b/vcl/inc/saldatabasic.hxx deleted file mode 100644 index 4703dddd61d6..000000000000 --- a/vcl/inc/saldatabasic.hxx +++ /dev/null @@ -1,59 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifndef INCLUDED_VCL_INC_SALDATABASIC_HXX -#define INCLUDED_VCL_INC_SALDATABASIC_HXX - -#include <vcl/dllapi.h> - -#include "svdata.hxx" -#include "salinst.hxx" - -#ifdef IOS -#include "quartz/salgdi.h" -#endif - -class VCL_PLUGIN_PUBLIC SalData -{ -public: - SalInstance* m_pInstance; // pointer to instance - - SalData(); - virtual ~SalData() COVERITY_NOEXCEPT_FALSE; -#ifdef IOS - SystemFontList* mpFontList; - CGColorSpaceRef mxRGBSpace; - CGColorSpaceRef mxGraySpace; - static void ensureThreadAutoreleasePool() {}; -#endif -}; - -inline void SetSalData( SalData* pData ) -{ - ImplGetSVData()->mpSalData = pData; -} - -inline SalData* GetSalData() -{ - return ImplGetSVData()->mpSalData; -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx index 21bf0718298d..89e4d67a3800 100644 --- a/vcl/inc/svdata.hxx +++ b/vcl/inc/svdata.hxx @@ -464,4 +464,8 @@ struct ImplSVEvent extern int nImplSysDialog; +inline SalData* GetSalData() { return ImplGetSVData()->mpSalData; } +inline void SetSalData(SalData* pData) { ImplGetSVData()->mpSalData = pData; } +inline SalInstance* GetSalInstance() { return ImplGetSVData()->mpDefInst; } + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/unx/gendata.hxx b/vcl/inc/unx/gendata.hxx index fc55125fe199..f276b988fe4a 100644 --- a/vcl/inc/unx/gendata.hxx +++ b/vcl/inc/unx/gendata.hxx @@ -12,7 +12,7 @@ #include <osl/socket.hxx> -#include <saldatabasic.hxx> +#include <svdata.hxx> #include <memory> @@ -24,7 +24,24 @@ class PrintFontManager; class PrinterInfoManager; } -class VCL_DLLPUBLIC GenericUnixSalData : public SalData +// SalData is a bit of a mess. For ImplSVData we need a SalData base class. +// Windows, MacOS and iOS implement their own SalData class, so there is no +// way to do inheritance from the "top" in all plugins. We also really don't +// want to rename GenericUnixSalData and don't want to reinterpret_cast some +// dummy pointer everywhere, so this seems the only sensible solution. +class VCL_PLUGIN_PUBLIC SalData +{ +protected: + SalData(); + +public: + virtual ~SalData(); +}; + +// This class is kind of a misnomer. What this class is mainly about is the +// usage of Freetype and Fontconfig, which happens to match all *nix backends; +// except that the osx and ios backends are *nix but don't use this. +class VCL_PLUGIN_PUBLIC GenericUnixSalData : public SalData { friend class ::psp::PrinterInfoManager; @@ -42,9 +59,9 @@ class VCL_DLLPUBLIC GenericUnixSalData : public SalData void InitPrintFontManager(); public: - GenericUnixSalData(SalInstance* const pInstance); + GenericUnixSalData(); virtual ~GenericUnixSalData() override; - virtual void Dispose() {} + virtual void Dispose(); SalGenericDisplay* GetDisplay() const { return m_pDisplay; } void SetDisplay(SalGenericDisplay* pDisp) { m_pDisplay = pDisp; } diff --git a/vcl/inc/unx/geninst.h b/vcl/inc/unx/geninst.h index 984e91a53925..6ef559d4137b 100644 --- a/vcl/inc/unx/geninst.h +++ b/vcl/inc/unx/geninst.h @@ -24,7 +24,7 @@ #include <memory> #include <comphelper/solarmutex.hxx> #include <salinst.hxx> -#include <saldatabasic.hxx> +#include <svdata.hxx> #include <unx/genprn.h> class VCL_DLLPUBLIC SalYieldMutex : public comphelper::SolarMutex @@ -81,7 +81,7 @@ protected: inline SalGenericInstance *GetGenericInstance() { - return static_cast<SalGenericInstance *>(GetSalData()->m_pInstance); + return static_cast<SalGenericInstance*>(GetSalInstance()); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/unx/gtk/gtkdata.hxx b/vcl/inc/unx/gtk/gtkdata.hxx index 0c6b73cabadc..d084837c4af0 100644 --- a/vcl/inc/unx/gtk/gtkdata.hxx +++ b/vcl/inc/unx/gtk/gtkdata.hxx @@ -285,7 +285,7 @@ class GtkSalData final : public GenericUnixSalData rtl::Reference<DocumentFocusListener> m_xDocumentFocusListener; public: - GtkSalData( SalInstance *pInstance ); + GtkSalData(); virtual ~GtkSalData() override; DocumentFocusListener & GetDocumentFocusListener(); diff --git a/vcl/inc/unx/gtk/gtkinst.hxx b/vcl/inc/unx/gtk/gtkinst.hxx index 8e243490b889..eb3199b58eaf 100644 --- a/vcl/inc/unx/gtk/gtkinst.hxx +++ b/vcl/inc/unx/gtk/gtkinst.hxx @@ -311,6 +311,8 @@ private: cairo_font_options_t* m_pLastCairoFontOptions; }; +inline GtkInstance* GetGtkInstance() { return static_cast<GtkInstance*>(GetSalInstance()); } + class SalGtkXWindow final : public weld::TransportAsXWindow { private: diff --git a/vcl/inc/unx/saldata.hxx b/vcl/inc/unx/saldata.hxx index f5819403ba63..65e957fbbedc 100644 --- a/vcl/inc/unx/saldata.hxx +++ b/vcl/inc/unx/saldata.hxx @@ -44,7 +44,7 @@ class X11SalData final : public GenericUnixSalData std::unique_ptr<SalXLib> pXLib_; public: - X11SalData(SalInstance *pInstance); + X11SalData(); virtual ~X11SalData() override; virtual void Init(); diff --git a/vcl/inc/win/saldata.hxx b/vcl/inc/win/saldata.hxx index 32accf042f37..dce54d03fb85 100644 --- a/vcl/inc/win/saldata.hxx +++ b/vcl/inc/win/saldata.hxx @@ -133,9 +133,6 @@ public: #endif }; -inline void SetSalData( SalData* pData ) { ImplGetSVData()->mpSalData = pData; } -inline SalData* GetSalData() { return ImplGetSVData()->mpSalData; } - struct SalShlData { HINSTANCE mhInst; // Instance of SAL-DLL diff --git a/vcl/ios/dummies.cxx b/vcl/ios/dummies.cxx index ad40587914a1..9e03f598f0ff 100644 --- a/vcl/ios/dummies.cxx +++ b/vcl/ios/dummies.cxx @@ -23,10 +23,6 @@ #include "unx/fontmanager.hxx" #include "unx/gendata.hxx" -class FreetypeManager -{ -}; - std::unique_ptr<SalPrinter> SvpSalInstance::CreatePrinter( SalInfoPrinter* /* pInfoPrinter */ ) { return nullptr; @@ -112,23 +108,6 @@ void SalGenericInstance::jobEndedPrinterUpdate() using namespace psp; -GenericUnixSalData::GenericUnixSalData(SalInstance *const pInstance) - : m_pDisplay(nullptr) - , m_pFreetypeManager(new FreetypeManager) - , m_pPrintFontManager(nullptr) -{ - m_pInstance = pInstance; - SetSalData(this); -} - -GenericUnixSalData::~GenericUnixSalData() -{ -} - -PrintFontManager::~PrintFontManager() -{ -} - bool AquaGraphicsBackend::drawNativeControl(ControlType /* nType */, ControlPart /* nPart */, const tools::Rectangle & /* rControlRegion */, diff --git a/vcl/ios/iosinst.cxx b/vcl/ios/iosinst.cxx index eda4d5782614..3579395924a0 100644 --- a/vcl/ios/iosinst.cxx +++ b/vcl/ios/iosinst.cxx @@ -22,7 +22,6 @@ #include <postmac.h> #include "ios/iosinst.hxx" -#include <headless/svpdata.hxx> #include "headless/svpdummies.hxx" #include "unx/gendata.hxx" #include "quartz/utils.h" @@ -32,6 +31,17 @@ // Totally wrong of course but doesn't seem to harm much in the iOS app. static int viewWidth = 1, viewHeight = 1; +class SalData +{ + SystemFontList* mpFontList; + CGColorSpaceRef mxRGBSpace; + CGColorSpaceRef mxGraySpace; + + static void ensureThreadAutoreleasePool() {}; + + explicit SalData(); +}; + void IosSalInstance::GetWorkArea( tools::Rectangle& rRect ) { rRect = tools::Rectangle( Point( 0, 0 ), @@ -42,10 +52,7 @@ IosSalInstance *IosSalInstance::getInstance() { if (!ImplGetSVData()) return NULL; - SvpSalData *pData = static_cast<SvpSalData *>(ImplGetSVData()->mpSalData); - if (!pData) - return NULL; - return static_cast<IosSalInstance *>(pData->m_pInstance); + return static_cast<IosSalInstance *>(GetSalInstance()); } IosSalInstance::IosSalInstance( std::unique_ptr<SalYieldMutex> pMutex ) @@ -147,16 +154,12 @@ const OUString& SalGetDesktopEnvironment() } SalData::SalData() : - m_pInstance( 0 ), mpFontList( 0 ), mxRGBSpace( CGColorSpaceCreateDeviceRGB() ), mxGraySpace( CGColorSpaceCreateDeviceGray() ) { } -SalData::~SalData() -{ -} // This is our main entry point: SalInstance *CreateSalInstance() diff --git a/vcl/ios/salios.cxx b/vcl/ios/salios.cxx index 249d662de65f..52e94b109e1c 100644 --- a/vcl/ios/salios.cxx +++ b/vcl/ios/salios.cxx @@ -32,7 +32,7 @@ #include <quartz/salvd.h> #include <quartz/utils.h> -#include "saldatabasic.hxx" +#include <svdata.hxx> // From salbmp.cxx diff --git a/vcl/qt5/QtClipboard.cxx b/vcl/qt5/QtClipboard.cxx index 893c58274238..55977d36642a 100644 --- a/vcl/qt5/QtClipboard.cxx +++ b/vcl/qt5/QtClipboard.cxx @@ -58,7 +58,7 @@ css::uno::Reference<css::uno::XInterface> QtClipboard::create(const OUString& aM void QtClipboard::flushClipboard() { - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); SolarMutexGuard g; pSalInst->RunInMainThread([this]() { if (!isOwner(m_aClipboardMode)) diff --git a/vcl/qt5/QtData.cxx b/vcl/qt5/QtData.cxx index e67abdd76224..8b60fc46ed56 100644 --- a/vcl/qt5/QtData.cxx +++ b/vcl/qt5/QtData.cxx @@ -155,8 +155,8 @@ #include <unx/glyphcache.hxx> -QtData::QtData(SalInstance* pInstance) - : GenericUnixSalData(pInstance) +QtData::QtData() + : GenericUnixSalData() { ImplSVData* pSVData = ImplGetSVData(); diff --git a/vcl/qt5/QtFilePicker.cxx b/vcl/qt5/QtFilePicker.cxx index 3fae63fca74f..05682fa1e7bf 100644 --- a/vcl/qt5/QtFilePicker.cxx +++ b/vcl/qt5/QtFilePicker.cxx @@ -123,7 +123,7 @@ QtFilePicker::QtFilePicker(css::uno::Reference<css::uno::XComponentContext> cons QtFilePicker::~QtFilePicker() { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->RunInMainThread([this]() { // must delete it in main thread, otherwise @@ -148,7 +148,7 @@ void SAL_CALL QtFilePicker::removeFilePickerListener(const uno::Reference<XFileP void SAL_CALL QtFilePicker::setTitle(const OUString& title) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->RunInMainThread( [this, &title]() { m_pFileDialog->setWindowTitle(toQString(title)); }); @@ -205,7 +205,7 @@ void QtFilePicker::finished(int nResult) sal_Int16 SAL_CALL QtFilePicker::execute() { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); if (!pSalInst->IsMainThread()) { @@ -236,7 +236,7 @@ QtFilePicker::startExecuteModal(const Reference<css::ui::dialogs::XDialogClosedL void SAL_CALL QtFilePicker::setMultiSelectionMode(sal_Bool multiSelect) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->RunInMainThread([this, multiSelect]() { if (m_bIsFolderPicker || m_pFileDialog->acceptMode() == QFileDialog::AcceptSave) @@ -250,7 +250,7 @@ void SAL_CALL QtFilePicker::setMultiSelectionMode(sal_Bool multiSelect) void SAL_CALL QtFilePicker::setDefaultName(const OUString& name) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->RunInMainThread([this, &name]() { m_pFileDialog->selectFile(toQString(name)); }); } @@ -258,7 +258,7 @@ void SAL_CALL QtFilePicker::setDefaultName(const OUString& name) void SAL_CALL QtFilePicker::setDisplayDirectory(const OUString& dir) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->RunInMainThread([this, &dir]() { QString qDir(toQString(dir)); @@ -270,7 +270,7 @@ OUString SAL_CALL QtFilePicker::getDisplayDirectory() { SolarMutexGuard g; OUString ret; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->RunInMainThread( [&ret, this]() { ret = toOUString(m_pFileDialog->directoryUrl().toString()); }); @@ -289,7 +289,7 @@ uno::Sequence<OUString> SAL_CALL QtFilePicker::getSelectedFiles() { SolarMutexGuard g; QList<QUrl> urls; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->RunInMainThread([&urls, this]() { urls = m_pFileDialog->selectedUrls(); }); @@ -326,7 +326,7 @@ uno::Sequence<OUString> SAL_CALL QtFilePicker::getSelectedFiles() void SAL_CALL QtFilePicker::appendFilter(const OUString& title, const OUString& filter) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); if (!pSalInst->IsMainThread()) { @@ -362,7 +362,7 @@ void SAL_CALL QtFilePicker::appendFilter(const OUString& title, const OUString& void SAL_CALL QtFilePicker::setCurrentFilter(const OUString& title) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->RunInMainThread([this, &title]() { m_aCurrentFilter = m_aTitleToFilterMap.value(toQString(title).replace("/", "\\/")); @@ -373,7 +373,7 @@ OUString SAL_CALL QtFilePicker::getCurrentFilter() { SolarMutexGuard g; QString filter; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->RunInMainThread([&filter, this]() { filter = m_aTitleToFilterMap.key(m_pFileDialog->selectedNameFilter()); @@ -388,7 +388,7 @@ void SAL_CALL QtFilePicker::appendFilterGroup(const OUString& rGroupTitle, const uno::Sequence<beans::StringPair>& filters) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); if (!pSalInst->IsMainThread()) { @@ -491,7 +491,7 @@ void SAL_CALL QtFilePicker::setValue(sal_Int16 controlId, sal_Int16 nControlActi const uno::Any& value) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); if (!pSalInst->IsMainThread()) { @@ -521,7 +521,7 @@ void SAL_CALL QtFilePicker::setValue(sal_Int16 controlId, sal_Int16 nControlActi uno::Any SAL_CALL QtFilePicker::getValue(sal_Int16 controlId, sal_Int16 nControlAction) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); if (!pSalInst->IsMainThread()) { @@ -555,7 +555,7 @@ uno::Any SAL_CALL QtFilePicker::getValue(sal_Int16 controlId, sal_Int16 nControl void SAL_CALL QtFilePicker::enableControl(sal_Int16 controlId, sal_Bool enable) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->RunInMainThread([this, controlId, enable]() { if (m_aCustomWidgetsMap.contains(controlId)) @@ -568,7 +568,7 @@ void SAL_CALL QtFilePicker::enableControl(sal_Int16 controlId, sal_Bool enable) void SAL_CALL QtFilePicker::setLabel(sal_Int16 controlId, const OUString& label) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); if (!pSalInst->IsMainThread()) { @@ -589,7 +589,7 @@ void SAL_CALL QtFilePicker::setLabel(sal_Int16 controlId, const OUString& label) OUString SAL_CALL QtFilePicker::getLabel(sal_Int16 controlId) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); if (!pSalInst->IsMainThread()) { @@ -742,7 +742,7 @@ void SAL_CALL QtFilePicker::initialize(const uno::Sequence<uno::Any>& args) } SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); if (!pSalInst->IsMainThread()) { diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx index 1f69ed66da0c..9b645205946e 100644 --- a/vcl/qt5/QtFrame.cxx +++ b/vcl/qt5/QtFrame.cxx @@ -59,7 +59,6 @@ #endif #endif -#include <saldatabasic.hxx> #include <window.h> #include <vcl/syswin.hxx> @@ -120,7 +119,7 @@ QtFrame::QtFrame(QtFrame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo) #endif , m_nInputLanguage(LANGUAGE_DONTKNOW) { - QtInstance* pInst = static_cast<QtInstance*>(GetSalData()->m_pInstance); + QtInstance* pInst = GetQtInstance(); pInst->insertFrame(this); m_aDamageHandler.handle = this; @@ -273,7 +272,7 @@ void QtFrame::fixICCCMwindowGroup() QtFrame::~QtFrame() { - QtInstance* pInst = static_cast<QtInstance*>(GetSalData()->m_pInstance); + QtInstance* pInst = GetQtInstance(); pInst->eraseFrame(this); delete asChild(); m_aSystemData.aShellWindow = 0; @@ -334,7 +333,7 @@ void QtFrame::ReleaseGraphics(SalGraphics* pSalGraph) bool QtFrame::PostEvent(std::unique_ptr<ImplSVEvent> pData) { - QtInstance* pInst = static_cast<QtInstance*>(GetSalData()->m_pInstance); + QtInstance* pInst = GetQtInstance(); pInst->PostEvent(this, pData.release(), SalEvent::UserEvent); return true; } @@ -420,7 +419,7 @@ void QtFrame::SetExtendedFrameStyle(SalExtStyle /*nExtStyle*/) { /* not needed * void QtFrame::modalReparent(bool bVisible) { #ifndef NDEBUG - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); assert(pSalInst->IsMainThread()); assert(!asChild()->isVisible()); @@ -439,7 +438,7 @@ void QtFrame::modalReparent(bool bVisible) if (!pModalWin || m_pParent->windowHandle() == pModalWin) return; - QtInstance* pInst = static_cast<QtInstance*>(GetSalData()->m_pInstance); + QtInstance* pInst = GetQtInstance(); for (auto* pFrame : pInst->getFrames()) { QtFrame* pQtFrame = static_cast<QtFrame*>(pFrame); @@ -459,7 +458,7 @@ void QtFrame::Show(bool bVisible, bool bNoActivate) if (bVisible == asChild()->isVisible()) return; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); if (!bVisible) // hide @@ -671,7 +670,7 @@ void QtFrame::SetModal(bool bModal) if (!isWindow() || asChild()->isModal() == bModal) return; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->RunInMainThread([this, bModal]() { @@ -856,7 +855,7 @@ void QtFrame::SetPointer(PointerStyle ePointerStyle) return; m_ePointerStyle = ePointerStyle; - pWindow->setCursor(static_cast<QtData*>(GetSalData())->getCursor(ePointerStyle)); + pWindow->setCursor(GetQtData()->getCursor(ePointerStyle)); } void QtFrame::CaptureMouse(bool bMouse) diff --git a/vcl/qt5/QtInstance.cxx b/vcl/qt5/QtInstance.cxx index cde8924915a2..bb7e98c051cd 100644 --- a/vcl/qt5/QtInstance.cxx +++ b/vcl/qt5/QtInstance.cxx @@ -98,7 +98,7 @@ public: bool QtYieldMutex::IsCurrentThread() const { - auto const* pSalInst(static_cast<QtInstance const*>(GetSalData()->m_pInstance)); + auto const* pSalInst(GetQtInstance()); assert(pSalInst); if (pSalInst->IsMainThread() && m_bNoYieldLock) { @@ -109,7 +109,7 @@ bool QtYieldMutex::IsCurrentThread() const void QtYieldMutex::doAcquire(sal_uInt32 nLockCount) { - auto const* pSalInst(static_cast<QtInstance const*>(GetSalData()->m_pInstance)); + auto const* pSalInst(GetQtInstance()); assert(pSalInst); if (!pSalInst->IsMainThread()) { @@ -155,7 +155,7 @@ void QtYieldMutex::doAcquire(sal_uInt32 nLockCount) sal_uInt32 QtYieldMutex::doRelease(bool const bUnlockAll) { - auto const* pSalInst(static_cast<QtInstance const*>(GetSalData()->m_pInstance)); + auto const* pSalInst(GetQtInstance()); assert(pSalInst); if (pSalInst->IsMainThread() && m_bNoYieldLock) { @@ -704,7 +704,7 @@ VCLPLUG_QT_PUBLIC SalInstance* create_SalInstance() QtInstance* pInstance = new QtInstance(pQApp, bUseCairo); pInstance->MoveFakeCmdlineArgs(pFakeArgv, pFakeArgc, aFakeArgvFreeable); - new QtData(pInstance); + new QtData(); return pInstance; } diff --git a/vcl/qt5/QtInstance_Print.cxx b/vcl/qt5/QtInstance_Print.cxx index 30251c8bb003..e6396099dbe5 100644 --- a/vcl/qt5/QtInstance_Print.cxx +++ b/vcl/qt5/QtInstance_Print.cxx @@ -32,7 +32,6 @@ #include <jobset.h> #include <print.h> #include <salptype.hxx> -#include <saldatabasic.hxx> #include <unx/genpspgraphics.h> diff --git a/vcl/qt5/QtMenu.cxx b/vcl/qt5/QtMenu.cxx index c6224b137665..d9279fb9389a 100644 --- a/vcl/qt5/QtMenu.cxx +++ b/vcl/qt5/QtMenu.cxx @@ -410,7 +410,7 @@ void QtMenu::SetSubMenu(SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned n void QtMenu::SetFrame(const SalFrame* pFrame) { - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); if (!pSalInst->IsMainThread()) { diff --git a/vcl/qt5/QtTransferable.cxx b/vcl/qt5/QtTransferable.cxx index a2483b4b5f3a..4f42f93a238b 100644 --- a/vcl/qt5/QtTransferable.cxx +++ b/vcl/qt5/QtTransferable.cxx @@ -176,7 +176,7 @@ css::uno::Any SAL_CALL QtClipboardTransferable::getTransferData(const css::datatransfer::DataFlavor& rFlavor) { css::uno::Any aAny; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); SolarMutexGuard g; pSalInst->RunInMainThread([&, this]() { if (!hasInFlightChanged()) @@ -189,7 +189,7 @@ css::uno::Sequence<css::datatransfer::DataFlavor> SAL_CALL QtClipboardTransferable::getTransferDataFlavors() { css::uno::Sequence<css::datatransfer::DataFlavor> aSeq; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); SolarMutexGuard g; pSalInst->RunInMainThread([&, this]() { if (!hasInFlightChanged()) @@ -202,7 +202,7 @@ sal_Bool SAL_CALL QtClipboardTransferable::isDataFlavorSupported(const css::datatransfer::DataFlavor& rFlavor) { bool bIsSupported = false; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); SolarMutexGuard g; pSalInst->RunInMainThread([&, this]() { if (!hasInFlightChanged()) diff --git a/vcl/qt5/QtWidget.cxx b/vcl/qt5/QtWidget.cxx index 40d912badc7d..979d345f679a 100644 --- a/vcl/qt5/QtWidget.cxx +++ b/vcl/qt5/QtWidget.cxx @@ -837,7 +837,7 @@ void QtWidget::changeEvent(QEvent* pEvent) [[fallthrough]]; case QEvent::StyleChange: { - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); pSalInst->UpdateStyle(QEvent::FontChange == pEvent->type()); break; diff --git a/vcl/quartz/AquaGraphicsBackend.cxx b/vcl/quartz/AquaGraphicsBackend.cxx index 056d2cd0e32f..fdcbae1e3870 100644 --- a/vcl/quartz/AquaGraphicsBackend.cxx +++ b/vcl/quartz/AquaGraphicsBackend.cxx @@ -41,7 +41,7 @@ #endif #include <quartz/utils.h> #ifdef IOS -#include "saldatabasic.hxx" +#include <svdata.hxx> #endif #include <sft.hxx> diff --git a/vcl/quartz/salbmp.cxx b/vcl/quartz/salbmp.cxx index 8fadba1b509e..f0f5fb9a5b8f 100644 --- a/vcl/quartz/salbmp.cxx +++ b/vcl/quartz/salbmp.cxx @@ -42,7 +42,7 @@ #ifdef MACOSX #include <osx/saldata.hxx> #else -#include "saldatabasic.hxx" +#include <svdata.hxx> #endif const unsigned long k32BitRedColorMask = 0x00ff0000; diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx index cbeaea4fc62b..98b00b305366 100644 --- a/vcl/quartz/salgdi.cxx +++ b/vcl/quartz/salgdi.cxx @@ -51,7 +51,7 @@ #endif #include <quartz/utils.h> #ifdef IOS -#include "saldatabasic.hxx" +#include <svdata.hxx> #endif #include <sallayout.hxx> #include <sft.hxx> diff --git a/vcl/quartz/salgdicommon.cxx b/vcl/quartz/salgdicommon.cxx index b4b24d4e5f4d..197f4b38f6bf 100644 --- a/vcl/quartz/salgdicommon.cxx +++ b/vcl/quartz/salgdicommon.cxx @@ -40,7 +40,7 @@ #endif #include <quartz/utils.h> #ifdef IOS -#include "saldatabasic.hxx" +#include <svdata.hxx> #endif #include <sft.hxx> diff --git a/vcl/source/app/salplug.cxx b/vcl/source/app/salplug.cxx index f01bd6e5a2c0..264e46c7aed1 100644 --- a/vcl/source/app/salplug.cxx +++ b/vcl/source/app/salplug.cxx @@ -35,7 +35,7 @@ #include <unistd.h> #else -#include <saldatabasic.hxx> +#include <svdata.hxx> #include <o3tl/char16_t2wchar_t.hxx> #include <Windows.h> #endif @@ -339,8 +339,8 @@ void DestroySalInstance( SalInstance *pInst ) void SalAbort( const OUString& rErrorText, bool bDumpCore ) { - if (GetSalData()->m_pInstance) - GetSalData()->m_pInstance->BeforeAbort(rErrorText, bDumpCore); + if (GetSalInstance()) + GetSalInstance()->BeforeAbort(rErrorText, bDumpCore); #if defined _WIN32 if( rErrorText.isEmpty() ) @@ -403,15 +403,6 @@ const OUString& SalGetDesktopEnvironment() return aDesktopEnvironment; } -SalData::SalData() : - m_pInstance(nullptr) -{ -} - -SalData::~SalData() COVERITY_NOEXCEPT_FALSE -{ -} - #ifdef _WIN32 bool HasAtHook() { diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx index ccbe0b177636..3a9019e006fa 100644 --- a/vcl/source/app/svmain.cxx +++ b/vcl/source/app/svmain.cxx @@ -52,7 +52,7 @@ #include <debugevent.hxx> #include <scrwnd.hxx> #include <windowdev.hxx> -#include <saldatabasic.hxx> +#include <svdata.hxx> #ifdef _WIN32 #include <svsys.h> @@ -107,6 +107,10 @@ #include <rtl/strbuf.hxx> #endif +#ifdef LINUX +#include <unx/gendata.hxx> +#endif + using namespace ::com::sun::star; static bool g_bIsLeanException; diff --git a/vcl/unx/generic/app/gendata.cxx b/vcl/unx/generic/app/gendata.cxx index 479694c6dd73..444d653023a7 100644 --- a/vcl/unx/generic/app/gendata.cxx +++ b/vcl/unx/generic/app/gendata.cxx @@ -23,20 +23,25 @@ #include <unx/glyphcache.hxx> #include <printerinfomanager.hxx> -GenericUnixSalData::GenericUnixSalData(SalInstance* const pInstance) +SalData::SalData() { SetSalData(this); } + +SalData::~SalData() {} + +GenericUnixSalData::GenericUnixSalData() : m_pDisplay(nullptr) { - m_pInstance = pInstance; - SetSalData(this); } GenericUnixSalData::~GenericUnixSalData() { + // at least for InitPrintFontManager the sequence is important m_pPrintFontManager.reset(); m_pFreetypeManager.reset(); m_pPrinterInfoManager.reset(); } +void GenericUnixSalData::Dispose() {} + void GenericUnixSalData::InitFreetypeManager() { m_pFreetypeManager.reset(new FreetypeManager); } void GenericUnixSalData::InitPrintFontManager() diff --git a/vcl/unx/generic/app/saldata.cxx b/vcl/unx/generic/app/saldata.cxx index 25efc5529b28..488e9937dc19 100644 --- a/vcl/unx/generic/app/saldata.cxx +++ b/vcl/unx/generic/app/saldata.cxx @@ -232,8 +232,8 @@ static const char* XRequest[] = { "X_NoOperation" }; -X11SalData::X11SalData(SalInstance *pInstance) - : GenericUnixSalData(pInstance) +X11SalData::X11SalData() + : GenericUnixSalData() { pXLib_ = nullptr; diff --git a/vcl/unx/generic/app/saldisp.cxx b/vcl/unx/generic/app/saldisp.cxx index 33259eb2da49..490b4b771692 100644 --- a/vcl/unx/generic/app/saldisp.cxx +++ b/vcl/unx/generic/app/saldisp.cxx @@ -1890,7 +1890,7 @@ void SalX11Display::Yield() return; XEvent aEvent; - DBG_ASSERT( GetSalData()->m_pInstance->GetYieldMutex()->IsCurrentThread(), + DBG_ASSERT(GetSalInstance()->GetYieldMutex()->IsCurrentThread(), "will crash soon since solar mutex not locked in SalDisplay::Yield" ); XNextEvent( pDisp_, &aEvent ); @@ -1934,7 +1934,7 @@ void SalX11Display::Dispatch( XEvent *pEvent ) return; } - SalInstance* pInstance = GetSalData()->m_pInstance; + SalInstance* pInstance = GetSalInstance(); pInstance->CallEventCallback( pEvent, sizeof( XEvent ) ); switch( pEvent->type ) diff --git a/vcl/unx/generic/app/salinst.cxx b/vcl/unx/generic/app/salinst.cxx index 437614f35177..502f4c7f7ec2 100644 --- a/vcl/unx/generic/app/salinst.cxx +++ b/vcl/unx/generic/app/salinst.cxx @@ -59,7 +59,7 @@ extern "C" X11SalInstance* pInstance = new X11SalInstance( std::make_unique<SalYieldMutex>() ); // initialize SalData - X11SalData *pSalData = new X11SalData(pInstance); + X11SalData *pSalData = new X11SalData(); pSalData->Init(); pInstance->SetLib( pSalData->GetLib() ); diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx index c403c2f3246b..9ef00512c142 100644 --- a/vcl/unx/generic/gdi/cairotextrender.cxx +++ b/vcl/unx/generic/gdi/cairotextrender.cxx @@ -25,6 +25,7 @@ #include <unx/freetype_glyphcache.hxx> #include <vcl/svapp.hxx> #include <sallayout.hxx> +#include <salinst.hxx> #include <cairo.h> #include <cairo-ft.h> @@ -168,8 +169,7 @@ void CairoTextRender::DrawTextLayout(const GenericSalLayout& rLayout, const SalG return; } - ImplSVData* pSVData = ImplGetSVData(); - if (const cairo_font_options_t* pFontOptions = pSVData->mpDefInst->GetCairoFontOptions()) + if (const cairo_font_options_t* pFontOptions = GetSalInstance()->GetCairoFontOptions()) { const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); bool bDisableAA = !rStyleSettings.GetUseFontAAFromSystem() && !rGraphics.getAntiAlias(); @@ -300,8 +300,7 @@ void CairoTextRender::DrawTextLayout(const GenericSalLayout& rLayout, const SalG void FontConfigFontOptions::cairo_font_options_substitute(FcPattern* pPattern) { - ImplSVData* pSVData = ImplGetSVData(); - const cairo_font_options_t* pFontOptions = pSVData->mpDefInst->GetCairoFontOptions(); + const cairo_font_options_t* pFontOptions = GetSalInstance()->GetCairoFontOptions(); if( !pFontOptions ) return; cairo_ft_font_options_substitute(pFontOptions, pPattern); diff --git a/vcl/unx/generic/print/genprnpsp.cxx b/vcl/unx/generic/print/genprnpsp.cxx index aa81b67e6ae7..b84ba0befc4c 100644 --- a/vcl/unx/generic/print/genprnpsp.cxx +++ b/vcl/unx/generic/print/genprnpsp.cxx @@ -55,7 +55,6 @@ #include <vcl/settings.hxx> #include <vcl/weld.hxx> #include <strings.hrc> -#include <saldatabasic.hxx> #include <unx/genprn.h> #include <unx/geninst.h> #include <unx/genpspgraphics.h> @@ -830,7 +829,7 @@ bool PspSalPrinter::StartJob( ImplJobSetup* pJobSetup ) { SAL_INFO( "vcl.unx.print", "PspSalPrinter::StartJob"); - GetSalData()->m_pInstance->jobStartedPrinterUpdate(); + GetSalInstance()->jobStartedPrinterUpdate(); m_bPdf = false; if (pFileName) m_aFileName = *pFileName; @@ -883,7 +882,7 @@ bool PspSalPrinter::EndJob() bSuccess = createPdf( m_aFileName, m_aTmpFile, rInfo.m_aCommand ); } } - GetSalData()->m_pInstance->jobEndedPrinterUpdate(); + GetSalInstance()->jobEndedPrinterUpdate(); return bSuccess; } @@ -1226,7 +1225,7 @@ int PrinterUpdate::nActiveJobs = 0; void PrinterUpdate::doUpdate() { ::psp::PrinterInfoManager& rManager( ::psp::PrinterInfoManager::get() ); - SalGenericInstance *pInst = static_cast<SalGenericInstance *>( GetSalData()->m_pInstance ); + SalGenericInstance *pInst = GetGenericInstance(); if( pInst && rManager.checkPrintersChanged( false ) ) pInst->PostPrintersChanged(); } diff --git a/vcl/unx/generic/window/salframe.cxx b/vcl/unx/generic/window/salframe.cxx index f38e10d252b7..00fd74693c9f 100644 --- a/vcl/unx/generic/window/salframe.cxx +++ b/vcl/unx/generic/window/salframe.cxx @@ -38,7 +38,6 @@ #include <X11/keysym.h> #include <X11/extensions/shape.h> -#include <saldatabasic.hxx> #include <unx/saldisp.hxx> #include <unx/salgdi.h> #include <unx/salframe.h> @@ -3295,7 +3294,7 @@ bool X11SalFrame::HandleFocusEvent( XFocusChangeEvent const *pEvent ) if( FocusIn == pEvent->type ) { - GetSalData()->m_pInstance->updatePrinterUpdate(); + GetSalInstance()->updatePrinterUpdate(); mbInputFocus = True; ImplSVData* pSVData = ImplGetSVData(); diff --git a/vcl/unx/gtk3/gtkdata.cxx b/vcl/unx/gtk3/gtkdata.cxx index 861ae6e64743..4d65a9b2ef1b 100644 --- a/vcl/unx/gtk3/gtkdata.cxx +++ b/vcl/unx/gtk3/gtkdata.cxx @@ -330,8 +330,8 @@ int GtkSalDisplay::CaptureMouse( SalFrame* pSFrame ) * class GtkSalData * **********************************************************************/ -GtkSalData::GtkSalData( SalInstance *pInstance ) - : GenericUnixSalData(pInstance) +GtkSalData::GtkSalData() + : GenericUnixSalData() { m_pUserEvent = nullptr; } @@ -759,8 +759,7 @@ GtkSalTimer::GtkSalTimer() GtkSalTimer::~GtkSalTimer() { - GtkInstance *pInstance = static_cast<GtkInstance *>(GetSalData()->m_pInstance); - pInstance->RemoveTimer(); + GetGtkInstance()->RemoveTimer(); Stop(); } diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx index 66fa98d08cb5..1c3daa45eab7 100644 --- a/vcl/unx/gtk3/gtkframe.cxx +++ b/vcl/unx/gtk3/gtkframe.cxx @@ -3670,8 +3670,7 @@ void GtkSalFrame::TriggerPaintEvent() void GtkSalFrame::DrawingAreaFocusInOut(SalEvent nEventType) { - SalGenericInstance* pSalInstance = - static_cast<SalGenericInstance*>(GetSalData()->m_pInstance); + SalGenericInstance* pSalInstance = GetGenericInstance(); // check if printers have changed (analogous to salframe focus handler) pSalInstance->updatePrinterUpdate(); @@ -3703,8 +3702,7 @@ gboolean GtkSalFrame::signalFocus( GtkWidget*, GdkEventFocus* pEvent, gpointer f { GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame); - SalGenericInstance *pSalInstance = - static_cast< SalGenericInstance* >(GetSalData()->m_pInstance); + SalGenericInstance *pSalInstance = GetGenericInstance(); // check if printers have changed (analogous to salframe focus handler) pSalInstance->updatePrinterUpdate(); @@ -4343,7 +4341,7 @@ void GtkSalFrame::signalStyleUpdated(GtkWidget*, gpointer frame) // a plausible alternative might be to send SalEvent::FontChanged if pSetting starts with "gtk-xft" // fire off font-changed when the system cairo font hints change - GtkInstance *pInstance = static_cast<GtkInstance*>(GetSalData()->m_pInstance); + GtkInstance *pInstance = GetGtkInstance(); const cairo_font_options_t* pLastCairoFontOptions = pInstance->GetLastSeenCairoFontOptions(); const cairo_font_options_t* pCurrentCairoFontOptions = pThis->get_font_options(); bool bFontSettingsChanged = true; @@ -4633,7 +4631,7 @@ public: gtk_selection_data_free(m_pData); #else - SalInstance* pInstance = GetSalData()->m_pInstance; + SalInstance* pInstance = GetSalInstance(); read_transfer_result aRes; const char *mime_types[] = { it->second.getStr(), nullptr }; @@ -5945,8 +5943,7 @@ bool GtkSalFrame::CallCallbackExc(SalEvent nEvent, const void* pEvent) const } catch (...) { - GtkSalData *pSalData = static_cast<GtkSalData*>(GetSalData()); - pSalData->setException(std::current_exception()); + GetGtkSalData()->setException(std::current_exception()); } return nRet; } diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index d6603d9b507d..9747c8a632f3 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -103,7 +103,7 @@ using namespace com::sun::star::lang; extern "C" { - #define GET_YIELD_MUTEX() static_cast<GtkYieldMutex*>(GetSalData()->m_pInstance->GetYieldMutex()) + #define GET_YIELD_MUTEX() static_cast<GtkYieldMutex*>(GetSalInstance()->GetYieldMutex()) #if !GTK_CHECK_VERSION(4, 0, 0) static void GdkThreadsEnter() { @@ -169,7 +169,7 @@ extern "C" SAL_INFO("vcl.gtk", "creating GtkInstance " << pInstance); // Create SalData, this does not leak - new GtkSalData( pInstance ); + new GtkSalData(); return pInstance; } @@ -858,7 +858,7 @@ public: aRet <<= aSeq; } #else - SalInstance* pInstance = GetSalData()->m_pInstance; + SalInstance* pInstance = GetSalInstance(); read_transfer_result aRes; const char *mime_types[] = { it->second.getStr(), nullptr }; diff --git a/vcl/unx/kf5/KF5FilePicker.cxx b/vcl/unx/kf5/KF5FilePicker.cxx index 2cef6954c2ce..491ce7e31eb4 100644 --- a/vcl/unx/kf5/KF5FilePicker.cxx +++ b/vcl/unx/kf5/KF5FilePicker.cxx @@ -84,7 +84,7 @@ void SAL_CALL KF5FilePicker::setValue(sal_Int16 controlId, sal_Int16 nControlAct uno::Any SAL_CALL KF5FilePicker::getValue(sal_Int16 controlId, sal_Int16 nControlAction) { SolarMutexGuard g; - auto* pSalInst(static_cast<QtInstance*>(GetSalData()->m_pInstance)); + auto* pSalInst(GetQtInstance()); assert(pSalInst); if (!pSalInst->IsMainThread()) { diff --git a/vcl/unx/kf5/KF5SalInstance.cxx b/vcl/unx/kf5/KF5SalInstance.cxx index efcfd0963451..1a7fce697a0b 100644 --- a/vcl/unx/kf5/KF5SalInstance.cxx +++ b/vcl/unx/kf5/KF5SalInstance.cxx @@ -104,7 +104,7 @@ VCLPLUG_KF5_PUBLIC SalInstance* create_SalInstance() KF5SalInstance* pInstance = new KF5SalInstance(pQApp, bUseCairo); pInstance->MoveFakeCmdlineArgs(pFakeArgv, pFakeArgc, aFakeArgvFreeable); - new QtData(pInstance); + new QtData(); return pInstance; } |