summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/qt5/Qt5Frame.hxx7
-rw-r--r--vcl/inc/qt5/Qt5Instance.hxx1
-rw-r--r--vcl/qt5/Qt5Frame.cxx28
-rw-r--r--vcl/unx/kf5/KF5SalFrame.cxx24
-rw-r--r--vcl/unx/kf5/KF5SalFrame.hxx6
-rw-r--r--vcl/unx/kf5/KF5SalInstance.cxx13
-rw-r--r--vcl/unx/kf5/KF5SalInstance.hxx1
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);