fix coredump of ukui-volume-control-applet-qt

This commit is contained in:
peijiankang 2023-02-13 10:36:59 +08:00
parent 025bd39b6c
commit 0cb3e3cd40
2 changed files with 56 additions and 12 deletions

View File

@ -1,14 +1,15 @@
From 702a5c8d1353f53577163818d6e567831e357b85 Mon Sep 17 00:00:00 2001
From 31d9527ddb1f1e1c009378c867e862cb7aaa68c0 Mon Sep 17 00:00:00 2001
From: peijiankang <peijiankang@kylinos.cn>
Date: Fri, 10 Feb 2023 14:44:16 +0800
Date: Wed, 15 Feb 2023 16:26:38 +0800
Subject: [PATCH] fix coredump of ukui-volume-control-applet-qt
---
ukui-volume-control-applet-qt/ukmedia_volume_control.cpp | 4 ++++
1 file changed, 4 insertions(+)
.../ukmedia_volume_control.cpp | 16 ++++++++++++++++
.../ukmedia_volume_control.h | 2 +-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/ukui-volume-control-applet-qt/ukmedia_volume_control.cpp b/ukui-volume-control-applet-qt/ukmedia_volume_control.cpp
index b07294d..34465e3 100644
index b07294d..8edc83f 100644
--- a/ukui-volume-control-applet-qt/ukmedia_volume_control.cpp
+++ b/ukui-volume-control-applet-qt/ukmedia_volume_control.cpp
@@ -103,6 +103,10 @@ void UkmediaVolumeControl::setSinkMute(bool status)
@ -22,6 +23,52 @@ index b07294d..34465e3 100644
pa_cvolume v = m_pDefaultSink->volume;
v.channels = channel;
for (int i=0;i<v.channels;i++)
@@ -141,6 +145,10 @@ void UkmediaVolumeControl::setSourceMute(bool status)
*/
void UkmediaVolumeControl::setSourceVolume(int index,int value)
{
+ if(m_pDefaultSink == nullptr){
+ return;
+ }
+
pa_cvolume v = m_pDefaultSink->volume;
v.channels = inputChannel;
for (int i=0;i<v.channels;i++)
@@ -231,6 +239,10 @@ int UkmediaVolumeControl::getModuleIndexByName(QString name)
*/
void UkmediaVolumeControl::setSinkInputVolume(int index, int value,int channel)
{
+ if(m_pDefaultSink == nullptr){
+ return;
+ }
+
pa_cvolume v = m_pDefaultSink->volume;
v.channels = channel;
@@ -267,6 +279,10 @@ void UkmediaVolumeControl::setSinkInputMuted(int index, bool status)
*/
void UkmediaVolumeControl::setSourceOutputVolume(int index, int value)
{
+ if(m_pDefaultSink == nullptr){
+ return;
+ }
+
pa_cvolume v = m_pDefaultSink->volume;
v.channels = sourceOutputChannel;
for (int i=0;i<v.channels;i++)
diff --git a/ukui-volume-control-applet-qt/ukmedia_volume_control.h b/ukui-volume-control-applet-qt/ukmedia_volume_control.h
index 555825f..b39b248 100644
--- a/ukui-volume-control-applet-qt/ukmedia_volume_control.h
+++ b/ukui-volume-control-applet-qt/ukmedia_volume_control.h
@@ -167,7 +167,7 @@ public:
bool firstRun = true;
pa_cvolume m_defaultSinkVolume;
- const pa_sink_info *m_pDefaultSink;
+ const pa_sink_info *m_pDefaultSink = nullptr;
pa_context* m_pPaContext;
std::map<uint32_t, char*> clientNames;
SinkInputType showSinkInputType;
--
2.33.0

View File

@ -52,21 +52,18 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
This package contains the common files.
%prep
%setup -q
%patch01 -p1
%patch02 -p1
%patch03 -p1
%autosetup -n %{name}-%{version} -p1
%build
mkdir build && pushd build
qmake-qt5 ..
make -j4
%{qmake_qt5} ..
%{make_build}
popd
%install
rm -rf $RPM_BUILD_ROOT
pushd build
make INSTALL_ROOT=$RPM_BUILD_ROOT install
%{make_install} INSTALL_ROOT=$RPM_BUILD_ROOT
popd