[Libreoffice-commits] core.git: vcl/inc vcl/qt5 vcl/unx

Jan-Marek Glogowski (via logerrit) logerrit at kemper.freedesktop.org
Sun Apr 11 19:14:34 UTC 2021


 vcl/inc/qt5/Qt5Frame.hxx       |    7 +------
 vcl/inc/qt5/Qt5Instance.hxx    |    1 +
 vcl/qt5/Qt5Frame.cxx           |   28 +++++++++++-----------------
 vcl/unx/kf5/KF5SalFrame.cxx    |   24 ------------------------
 vcl/unx/kf5/KF5SalFrame.hxx    |    6 ------
 vcl/unx/kf5/KF5SalInstance.cxx |   13 +++++++------
 vcl/unx/kf5/KF5SalInstance.hxx |    1 +
 7 files changed, 21 insertions(+), 59 deletions(-)

New commits:
commit 963f252cd1ea9c268a6ced68a3454b10cbee1a89
Author:     Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Sun Apr 11 17:40:26 2021 +0200
Commit:     Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Sun Apr 11 21:13:50 2021 +0200

    Qt5/KF5 get rid of unneeded own grahics handling
    
    This was hiding tdf#141623, when I decided to implement the override
    to run the kf5 VCL plugin with the qfont text rendering.
    
    Change-Id: Id1fcd363bd77a756cb27e3a171c872ce792da5ad
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113956
    Tested-by: Jenkins
    Reviewed-by: Jan-Marek Glogowski <glogow at fbihome.de>

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);


More information about the Libreoffice-commits mailing list