From 2e9aa0e924c803a1ac3a1080e52bed8cae8095d3 Mon Sep 17 00:00:00 2001 From: peijiankang Date: Sun, 11 Jun 2023 15:59:52 +0800 Subject: [PATCH] fix coredump of ukui-power-manager --- ukui-power-manager-tray/powertray.cpp | 20 +++++++++--- ukui-power-manager-tray/powerwindow.cpp | 43 ++++++++++++------------- ukui-power-manager-tray/powerwindow.h | 4 +-- 3 files changed, 39 insertions(+), 28 deletions(-) diff --git a/ukui-power-manager-tray/powertray.cpp b/ukui-power-manager-tray/powertray.cpp index 6a36c06..75f986e 100644 --- a/ukui-power-manager-tray/powertray.cpp +++ b/ukui-power-manager-tray/powertray.cpp @@ -147,8 +147,20 @@ void PowerTray::set_preference_func() PowerTray::~PowerTray() { - delete powerWindow; - delete menu; - delete trayIcon; - delete iface; + if (nullptr != powerWindow) { + delete powerWindow; + powerWindow = nullptr; + } + if (nullptr != menu) { + delete menu; + menu = nullptr; + } + if (nullptr != trayIcon) { + delete trayIcon; + trayIcon = nullptr; + } + if (nullptr != iface) { + delete iface; + iface = nullptr; + } } diff --git a/ukui-power-manager-tray/powerwindow.cpp b/ukui-power-manager-tray/powerwindow.cpp index 0b732b2..cf68795 100755 --- a/ukui-power-manager-tray/powerwindow.cpp +++ b/ukui-power-manager-tray/powerwindow.cpp @@ -67,7 +67,7 @@ powerwindow::powerwindow(QWidget *parent) : QWidget(parent) setWindowProperty(); //设置窗口属性 initUI(); //初始化UI initgsetting(); - set_window_position(); //设置出现在屏幕的位置以及大小 + //set_window_position(); //设置出现在屏幕的位置以及大小 watchTranspartency(); //监听屏幕改变的信号 @@ -82,16 +82,15 @@ powerwindow::powerwindow(QWidget *parent) : QWidget(parent) powerwindow::~powerwindow() { - delete m_pmainlayout; - delete m_firstlayout; - delete lastlayout; - delete m_firstwidget; - delete iconButton; - delete percentageLabel; - delete powerStateLabel; - delete powerTimeToEmpty; - delete settingLabel; - delete transparency_gsettings; + if (nullptr != transparency_gsettings) { + delete transparency_gsettings; + transparency_gsettings = nullptr; + } + if (nullptr != percentageLabel) { + delete percentageLabel; + percentageLabel = nullptr; + } + } void powerwindow::setWindowProperty() @@ -115,27 +114,27 @@ void powerwindow::initUI() hints.decorations = MWM_DECOR_BORDER; XAtomHelper::getInstance()->setWindowMotifHint(this->winId(), hints); - m_pmainlayout = new QVBoxLayout(); + m_pmainlayout = new QVBoxLayout(this); m_firstlayout = new QHBoxLayout(this); m_firstlayout->setContentsMargins(0, 0, 0, 0); - m_toplayout = new QHBoxLayout(); - lastlayout = new QHBoxLayout(); - m_statelayout = new QHBoxLayout(); + m_toplayout = new QHBoxLayout(this); + lastlayout = new QHBoxLayout(this); + m_statelayout = new QHBoxLayout(this); - m_firstwidget = new QWidget(); - m_topwidget = new QWidget(); - lastWidget = new QWidget(); - m_statewidget = new QWidget(); + m_firstwidget = new QWidget(this); + m_topwidget = new QWidget(this); + lastWidget = new QWidget(this); + m_statewidget = new QWidget(this); - iconButton = new BatteryIcon(); + iconButton = new BatteryIcon(this); percentageLabel = new PercentageLabel(); - powerStateLabel = new QLabel(); + powerStateLabel = new QLabel(this); powerStateLabel->setText(tr("Charging")); powerStateLabel->setVisible(false); - powerTimeToEmpty = new QLabel(); + powerTimeToEmpty = new QLabel(this); powerTimeToEmpty->setVisible(true); m_segmentationLine_1 = new Divider(this); diff --git a/ukui-power-manager-tray/powerwindow.h b/ukui-power-manager-tray/powerwindow.h index fffe943..84536ab 100755 --- a/ukui-power-manager-tray/powerwindow.h +++ b/ukui-power-manager-tray/powerwindow.h @@ -92,7 +92,7 @@ public: QWidget *m_statewidget; BatteryIcon *iconButton; - PercentageLabel *percentageLabel; + PercentageLabel *percentageLabel = nullptr; QLabel *powerStateLabel; QLabel *powerTimeToEmpty; QLabel *toplabel; @@ -123,7 +123,7 @@ private : int m_sysFontSize; int m_batteryState; double transparency; - QGSettings *transparency_gsettings; + QGSettings *transparency_gsettings = nullptr; QDBusInterface *m_notifyInterface; QGSettings *m_PowerManagerGsettings; enum powerPolicy -- 2.33.0