Skip to content

Commit 0d973f1

Browse files
fix(editor): Disconnect D-Bus signals in TextEdit destructor to prevent callbacks to destroyed objects
- Added disconnection of D-Bus signals for gesture and audio events in the TextEdit destructor. - Ensured proper handling based on system version and Qt version to avoid potential crashes. Log: Prevent callbacks to destroyed TextEdit instances by disconnecting D-Bus signals. bug: https://pms.uniontech.com/bug-view-350765.html
1 parent 90e4bb0 commit 0d973f1

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

src/editor/dtextedit.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,34 @@ TextEdit::TextEdit(QWidget *parent)
183183
TextEdit::~TextEdit()
184184
{
185185
qDebug() << "Destroying TextEdit component";
186+
// Disconnect D-Bus signals to prevent callbacks to destroyed object
187+
QDBusConnection dbus = QDBusConnection::sessionBus();
188+
switch (Utils::getSystemVersion()) {
189+
case Utils::V23:
190+
dbus.systemBus().disconnect("org.deepin.dde.Gesture1",
191+
"/org/deepin/dde/Gesture1", "org.deepin.dde.Gesture1",
192+
"Event",
193+
this, SLOT(fingerZoom(QString, QString, int)));
194+
break;
195+
default:
196+
dbus.systemBus().disconnect("com.deepin.daemon.Gesture",
197+
"/com/deepin/daemon/Gesture", "com.deepin.daemon.Gesture",
198+
"Event",
199+
this, SLOT(fingerZoom(QString, QString, int)));
200+
break;
201+
}
202+
203+
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
204+
dbus.sessionBus().disconnect("org.deepin.dde.Audio1",
205+
"/org/deepin/dde/Audio1", "org.deepin.dde.Audio1",
206+
"PortEnabledChanged",
207+
this, SLOT(onAudioPortEnabledChanged(quint32, QString, bool)));
208+
#else
209+
dbus.sessionBus().disconnect("com.deepin.daemon.Audio",
210+
"/com/deepin/daemon/Audio", "com.deepin.daemon.Audio",
211+
"PortEnabledChanged",
212+
this, SLOT(onAudioPortEnabledChanged(quint32, QString, bool)));
213+
#endif
186214
if (m_scrollAnimation != nullptr) {
187215
qDebug() << "m_scrollAnimation is not null";
188216
if (m_scrollAnimation->state() != QAbstractAnimation::Stopped) {

0 commit comments

Comments
 (0)