call method metaObject of QMetaType will coredump under Qt 6.4 Signed-off-by: ComixHe <heyuming@deepin.org>
37 lines
1.1 KiB
C++
37 lines
1.1 KiB
C++
// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
|
|
//
|
|
// SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
#include "dbus/jobmanager1service.h"
|
|
#include "dbus/jobmanager1adaptor.h"
|
|
|
|
JobManager1Service::JobManager1Service(ApplicationManager1Service *parent)
|
|
: m_parent(parent)
|
|
{
|
|
new JobManager1Adaptor{this};
|
|
if (!registerObjectToDBus(this, DDEApplicationManager1JobManagerObjectPath, JobManagerInterface)) {
|
|
std::terminate();
|
|
}
|
|
qRegisterMetaType<LaunchTask>();
|
|
}
|
|
|
|
JobManager1Service::~JobManager1Service() = default;
|
|
|
|
bool JobManager1Service::removeOneJob(const QDBusObjectPath &path)
|
|
{
|
|
decltype(m_jobs)::size_type removeCount{0};
|
|
{
|
|
QMutexLocker locker{&m_mutex};
|
|
removeCount = m_jobs.remove(path);
|
|
}
|
|
// removeCount means m_jobs can't find value which corresponding with path
|
|
// and we shouldn't emit jobRemoved signal because this signal may already has been emit
|
|
if (removeCount == 0) {
|
|
qWarning() << "Job already has been removed: " << path.path();
|
|
return false;
|
|
}
|
|
|
|
unregisterObjectFromDBus(path.path());
|
|
return true;
|
|
}
|