!36 [sync] PR-35: fix coredump of ukui-power-manager

From: @openeuler-sync-bot 
Reviewed-by: @dou33 
Signed-off-by: @dou33
This commit is contained in:
openeuler-ci-bot 2023-06-12 08:43:43 +00:00 committed by Gitee
commit 0e3fb4d7d7
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 148 additions and 2 deletions

View File

@ -0,0 +1,143 @@
From 2e9aa0e924c803a1ac3a1080e52bed8cae8095d3 Mon Sep 17 00:00:00 2001
From: peijiankang <peijiankang@kylinos.cn>
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

View File

@ -1,13 +1,13 @@
Name: ukui-power-manager
Version: 3.1.2
Release: 4
Release: 5
Summary: power management tool for the UKUI desktop
License: GPL-3+
URL: http://www.ukui.org
Source0: %{name}-%{version}.tar.gz
Patch01: ukui-power-manager-3.1.2-fix-default-power-setting.patch
Patch02: 0001-fix-coredump-of-ukui-power-manager.patch
BuildRequires: qt5-qtbase-devel, qt5-qttools-devel, ukui-interface, glib2-devel, upower-devel, libX11-devel, libXext-devel, perl-XML-Parser, libXrandr-devel, pkg-config, gsettings-qt-devel, kf5-kwindowsystem-devel, qt5-qtx11extras-devel libkysdk-qtwidgets-devel chrpath
Requires: dbus-x11,systemd,upower
@ -73,6 +73,9 @@ glib-compile-schemas /usr/share/glib-2.0/schemas/ &> /dev/null ||:
%{_datadir}/man/*
%changelog
* Sun Jun 11 2023 peijiankang <peijiankang@kylinos.cn> - 3.1.2-5
- fix coredump of ukui-power-manager
* Wed Mar 01 2023 peijiankang <peijiankang@kylinos.cn> - 3.1.2-4
- remove rpath of ukui-power-manager-tray