diff options
author | Aleksei Nikiforov <darktemplar@basealt.ru> | 2019-02-25 14:40:45 +0300 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2019-02-27 01:04:03 +0100 |
commit | 5fe551931d49a64ca4ea793a5016c098e41e84cd (patch) | |
tree | 7b06f43501b34cd8baa55616e8829d668d256cbf /vcl/qt5 | |
parent | 5e8276e665490d961c333f788469a5ecdb996d16 (diff) |
tdf#123406 KDE5: Use delayed frame destruction
Destroy Qt5Frame after all events are received.
Update Qt5Object to use delayed destruction too.
Change-Id: I07c7251e097ad56f3616f325fdc394d00fec4f4f
Reviewed-on: https://gerrit.libreoffice.org/68316
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'vcl/qt5')
-rw-r--r-- | vcl/qt5/Qt5Instance.cxx | 18 | ||||
-rw-r--r-- | vcl/qt5/Qt5Object.cxx | 1 |
2 files changed, 17 insertions, 2 deletions
diff --git a/vcl/qt5/Qt5Instance.cxx b/vcl/qt5/Qt5Instance.cxx index 31dfb83c25ba..2a190e4a0437 100644 --- a/vcl/qt5/Qt5Instance.cxx +++ b/vcl/qt5/Qt5Instance.cxx @@ -89,7 +89,14 @@ SalFrame* Qt5Instance::CreateFrame(SalFrame* pParent, SalFrameStyleFlags nStyle) return new Qt5Frame(static_cast<Qt5Frame*>(pParent), nStyle, m_bUseCairo); } -void Qt5Instance::DestroyFrame(SalFrame* pFrame) { delete pFrame; } +void Qt5Instance::DestroyFrame(SalFrame* pFrame) +{ + if (pFrame) + { + assert(dynamic_cast<Qt5Frame*>(pFrame)); + static_cast<Qt5Frame*>(pFrame)->deleteLater(); + } +} SalObject* Qt5Instance::CreateObject(SalFrame* pParent, SystemWindowData*, bool bShow) { @@ -97,7 +104,14 @@ SalObject* Qt5Instance::CreateObject(SalFrame* pParent, SystemWindowData*, bool return new Qt5Object(static_cast<Qt5Frame*>(pParent), bShow); } -void Qt5Instance::DestroyObject(SalObject* pObject) { delete pObject; } +void Qt5Instance::DestroyObject(SalObject* pObject) +{ + if (pObject) + { + assert(dynamic_cast<Qt5Object*>(pObject)); + static_cast<Qt5Object*>(pObject)->deleteLater(); + } +} std::unique_ptr<SalVirtualDevice> Qt5Instance::CreateVirtualDevice(SalGraphics* pGraphics, long& nDX, long& nDY, DeviceFormat eFormat, diff --git a/vcl/qt5/Qt5Object.cxx b/vcl/qt5/Qt5Object.cxx index b37ef20e61ac..b1952727c3a2 100644 --- a/vcl/qt5/Qt5Object.cxx +++ b/vcl/qt5/Qt5Object.cxx @@ -18,6 +18,7 @@ */ #include <Qt5Object.hxx> +#include <Qt5Object.moc> #include <Qt5Frame.hxx> |