Kaydet (Commit) 5fe55193 authored tarafından Aleksei Nikiforov's avatar Aleksei Nikiforov Kaydeden (comit) Thorsten Behrens

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: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
üst 5e8276e6
...@@ -16,6 +16,7 @@ $(call gb_CustomTarget_get_target,vcl/qt5) : \ ...@@ -16,6 +16,7 @@ $(call gb_CustomTarget_get_target,vcl/qt5) : \
$(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Instance.moc \ $(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Instance.moc \
$(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5MainWindow.moc \ $(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5MainWindow.moc \
$(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Menu.moc \ $(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Menu.moc \
$(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Object.moc \
$(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Timer.moc \ $(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Timer.moc \
$(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Widget.moc \ $(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Widget.moc \
$(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5XAccessible.moc \ $(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5XAccessible.moc \
......
...@@ -22,14 +22,17 @@ ...@@ -22,14 +22,17 @@
#include <salobj.hxx> #include <salobj.hxx>
#include <vcl/sysdata.hxx> #include <vcl/sysdata.hxx>
#include <QtCore/QObject>
#include <QtGui/QRegion> #include <QtGui/QRegion>
class Qt5Frame; class Qt5Frame;
class QWidget; class QWidget;
class QWindow; class QWindow;
class Qt5Object : public SalObject class Qt5Object : public QObject, public SalObject
{ {
Q_OBJECT
friend class Qt5OpenGLContext; friend class Qt5OpenGLContext;
SystemEnvData m_aSystemData; SystemEnvData m_aSystemData;
......
...@@ -89,7 +89,14 @@ SalFrame* Qt5Instance::CreateFrame(SalFrame* pParent, SalFrameStyleFlags nStyle) ...@@ -89,7 +89,14 @@ SalFrame* Qt5Instance::CreateFrame(SalFrame* pParent, SalFrameStyleFlags nStyle)
return new Qt5Frame(static_cast<Qt5Frame*>(pParent), nStyle, m_bUseCairo); 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) SalObject* Qt5Instance::CreateObject(SalFrame* pParent, SystemWindowData*, bool bShow)
{ {
...@@ -97,7 +104,14 @@ SalObject* Qt5Instance::CreateObject(SalFrame* pParent, SystemWindowData*, bool ...@@ -97,7 +104,14 @@ SalObject* Qt5Instance::CreateObject(SalFrame* pParent, SystemWindowData*, bool
return new Qt5Object(static_cast<Qt5Frame*>(pParent), bShow); 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> std::unique_ptr<SalVirtualDevice>
Qt5Instance::CreateVirtualDevice(SalGraphics* pGraphics, long& nDX, long& nDY, DeviceFormat eFormat, Qt5Instance::CreateVirtualDevice(SalGraphics* pGraphics, long& nDX, long& nDY, DeviceFormat eFormat,
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
#include <Qt5Object.hxx> #include <Qt5Object.hxx>
#include <Qt5Object.moc>
#include <Qt5Frame.hxx> #include <Qt5Frame.hxx>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment