diff options
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/qt5/Qt5Frame.hxx | 7 | ||||
-rw-r--r-- | vcl/inc/qt5/Qt5Instance.hxx | 1 | ||||
-rw-r--r-- | vcl/qt5/Qt5Frame.cxx | 28 | ||||
-rw-r--r-- | vcl/unx/kf5/KF5SalFrame.cxx | 24 | ||||
-rw-r--r-- | vcl/unx/kf5/KF5SalFrame.hxx | 6 | ||||
-rw-r--r-- | vcl/unx/kf5/KF5SalInstance.cxx | 13 | ||||
-rw-r--r-- | vcl/unx/kf5/KF5SalInstance.hxx | 1 |
7 files changed, 21 insertions, 59 deletions
diff --git a/vcl/inc/qt5/Qt5Frame.hxx b/vcl/inc/qt5/Qt5Frame.hxx index c07fda54ec40..828f212babfb 100644 --- a/vcl/inc/qt5/Qt5Frame.hxx +++ b/vcl/inc/qt5/Qt5Frame.hxx @@ -77,11 +77,7 @@ class VCLPLUG_QT5_PUBLIC Qt5Frame : public QObject, public SalFrame std::unique_ptr<QImage> m_pQImage; std::unique_ptr<Qt5Graphics> m_pQt5Graphics; UniqueCairoSurface m_pSurface; - std::unique_ptr<Qt5SvpGraphics> m_pOurSvpGraphics; - // in base class, this ptr is the same as m_pOurSvpGraphic - // in derived class, it can point to a derivative - // of Qt5SvpGraphics (which the derived class then owns) - Qt5SvpGraphics* m_pSvpGraphics; + std::unique_ptr<Qt5SvpGraphics> m_pSvpGraphics; DamageHandler m_aDamageHandler; QRegion m_aRegion; bool m_bNullRegion; @@ -146,7 +142,6 @@ public: void Damage(sal_Int32 nExtentsX, sal_Int32 nExtentsY, sal_Int32 nExtentsWidth, sal_Int32 nExtentsHeight) const; - void InitQt5SvpGraphics(Qt5SvpGraphics* pQt5SvpGraphics); virtual SalGraphics* AcquireGraphics() override; virtual void ReleaseGraphics(SalGraphics* pGraphics) override; diff --git a/vcl/inc/qt5/Qt5Instance.hxx b/vcl/inc/qt5/Qt5Instance.hxx index 8cfa9ac960f1..5dc2db898d29 100644 --- a/vcl/inc/qt5/Qt5Instance.hxx +++ b/vcl/inc/qt5/Qt5Instance.hxx @@ -83,6 +83,7 @@ protected: virtual rtl::Reference<Qt5FilePicker> createPicker(css::uno::Reference<css::uno::XComponentContext> const& context, QFileDialog::FileMode); + bool useCairo() const { return m_bUseCairo; } public: explicit Qt5Instance(std::unique_ptr<QApplication>& pQApp, bool bUseCairo = false); diff --git a/vcl/qt5/Qt5Frame.cxx b/vcl/qt5/Qt5Frame.cxx index 68f7a8120460..97cc7e938446 100644 --- a/vcl/qt5/Qt5Frame.cxx +++ b/vcl/qt5/Qt5Frame.cxx @@ -103,7 +103,6 @@ sal_Int32 screenNumber(const QScreen* pScreen) Qt5Frame::Qt5Frame(Qt5Frame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo) : m_pTopLevel(nullptr) , m_bUseCairo(bUseCairo) - , m_pSvpGraphics(nullptr) , m_bNullRegion(true) , m_bGraphicsInUse(false) , m_bGraphicsInvalid(false) @@ -288,17 +287,6 @@ void Qt5Frame::Damage(sal_Int32 nExtentsX, sal_Int32 nExtentsY, sal_Int32 nExten 1 / devicePixelRatioF())); } -void Qt5Frame::InitQt5SvpGraphics(Qt5SvpGraphics* pQt5SvpGraphics) -{ - QSize aSize = m_pQWidget->size() * devicePixelRatioF(); - m_pSvpGraphics = pQt5SvpGraphics; - m_pSurface.reset( - cairo_image_surface_create(CAIRO_FORMAT_ARGB32, aSize.width(), aSize.height())); - m_pSvpGraphics->setSurface(m_pSurface.get(), basegfx::B2IVector(aSize.width(), aSize.height())); - cairo_surface_set_user_data(m_pSurface.get(), Qt5SvpGraphics::getDamageKey(), &m_aDamageHandler, - nullptr); -} - SalGraphics* Qt5Frame::AcquireGraphics() { if (m_bGraphicsInUse) @@ -308,13 +296,19 @@ SalGraphics* Qt5Frame::AcquireGraphics() if (m_bUseCairo) { - if (!m_pOurSvpGraphics || m_bGraphicsInvalid) + if (!m_pSvpGraphics || m_bGraphicsInvalid) { - m_pOurSvpGraphics.reset(new Qt5SvpGraphics(this)); - InitQt5SvpGraphics(m_pOurSvpGraphics.get()); + QSize aSize = m_pQWidget->size() * devicePixelRatioF(); + m_pSvpGraphics.reset(new Qt5SvpGraphics(this)); + m_pSurface.reset( + cairo_image_surface_create(CAIRO_FORMAT_ARGB32, aSize.width(), aSize.height())); + m_pSvpGraphics->setSurface(m_pSurface.get(), + basegfx::B2IVector(aSize.width(), aSize.height())); + cairo_surface_set_user_data(m_pSurface.get(), Qt5SvpGraphics::getDamageKey(), + &m_aDamageHandler, nullptr); m_bGraphicsInvalid = false; } - return m_pOurSvpGraphics.get(); + return m_pSvpGraphics.get(); } else { @@ -335,7 +329,7 @@ void Qt5Frame::ReleaseGraphics(SalGraphics* pSalGraph) { (void)pSalGraph; if (m_bUseCairo) - assert(pSalGraph == m_pOurSvpGraphics.get()); + assert(pSalGraph == m_pSvpGraphics.get()); else assert(pSalGraph == m_pQt5Graphics.get()); m_bGraphicsInUse = false; diff --git a/vcl/unx/kf5/KF5SalFrame.cxx b/vcl/unx/kf5/KF5SalFrame.cxx index 1aa0b9008de7..8f14594586d2 100644 --- a/vcl/unx/kf5/KF5SalFrame.cxx +++ b/vcl/unx/kf5/KF5SalFrame.cxx @@ -45,7 +45,6 @@ KF5SalFrame::KF5SalFrame(KF5SalFrame* pParent, SalFrameStyleFlags nState, bool bUseCairo) : Qt5Frame(pParent, nState, bUseCairo) - , m_bGraphicsInUse(false) { } @@ -162,27 +161,4 @@ void KF5SalFrame::UpdateSettings(AllSettings& rSettings) rSettings.SetStyleSettings(style); } -SalGraphics* KF5SalFrame::AcquireGraphics() -{ - if (m_bGraphicsInUse) - return nullptr; - - m_bGraphicsInUse = true; - - if (!m_pKF5Graphics) - { - m_pKF5Graphics.reset(new Qt5SvpGraphics(this)); - Qt5Frame::InitQt5SvpGraphics(m_pKF5Graphics.get()); - } - - return m_pKF5Graphics.get(); -} - -void KF5SalFrame::ReleaseGraphics(SalGraphics* pSalGraph) -{ - (void)pSalGraph; - assert(pSalGraph == m_pKF5Graphics.get()); - m_bGraphicsInUse = false; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/unx/kf5/KF5SalFrame.hxx b/vcl/unx/kf5/KF5SalFrame.hxx index f757535c2f35..d0fdd91978e6 100644 --- a/vcl/unx/kf5/KF5SalFrame.hxx +++ b/vcl/unx/kf5/KF5SalFrame.hxx @@ -28,15 +28,9 @@ class QWidget; class KF5SalFrame : public Qt5Frame { -private: - std::unique_ptr<Qt5SvpGraphics> m_pKF5Graphics; - bool m_bGraphicsInUse; - public: KF5SalFrame(KF5SalFrame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo); - virtual SalGraphics* AcquireGraphics() override; - virtual void ReleaseGraphics(SalGraphics* pGraphics) override; virtual void UpdateSettings(AllSettings& rSettings) override; }; diff --git a/vcl/unx/kf5/KF5SalInstance.cxx b/vcl/unx/kf5/KF5SalInstance.cxx index 4c1a87730e51..c1ee2f61a48d 100644 --- a/vcl/unx/kf5/KF5SalInstance.cxx +++ b/vcl/unx/kf5/KF5SalInstance.cxx @@ -40,14 +40,15 @@ KF5SalInstance::KF5SalInstance(std::unique_ptr<QApplication>& pQApp) pSVData->maAppData.mxToolkitName = OUString("kf5"); } +SalFrame* KF5SalInstance::CreateChildFrame(SystemParentData* /*pParent*/, SalFrameStyleFlags nStyle) +{ + return new KF5SalFrame(nullptr, nStyle, useCairo()); +} + SalFrame* KF5SalInstance::CreateFrame(SalFrame* pParent, SalFrameStyleFlags nState) { - SalFrame* pRet(nullptr); - RunInMainThread([&pRet, pParent, nState]() { - pRet = new KF5SalFrame(static_cast<KF5SalFrame*>(pParent), nState, true); - }); - assert(pRet); - return pRet; + assert(!pParent || dynamic_cast<KF5SalFrame*>(pParent)); + return new KF5SalFrame(static_cast<KF5SalFrame*>(pParent), nState, useCairo()); } bool KF5SalInstance::hasNativeFileSelection() const diff --git a/vcl/unx/kf5/KF5SalInstance.hxx b/vcl/unx/kf5/KF5SalInstance.hxx index b462e147003d..1d9ed8bc5d92 100644 --- a/vcl/unx/kf5/KF5SalInstance.hxx +++ b/vcl/unx/kf5/KF5SalInstance.hxx @@ -29,6 +29,7 @@ class KF5SalInstance final : public Qt5Instance QFileDialog::FileMode) override; SalFrame* CreateFrame(SalFrame* pParent, SalFrameStyleFlags nStyle) override; + SalFrame* CreateChildFrame(SystemParentData* pParent, SalFrameStyleFlags nStyle) override; public: explicit KF5SalInstance(std::unique_ptr<QApplication>& pQApp); |