Skip to content
This repository was archived by the owner on Jan 28, 2022. It is now read-only.

Commit 244da09

Browse files
committed
fix: check if mediaplayerutils worker thread is not null
1 parent 20bafc7 commit 244da09

File tree

2 files changed

+32
-30
lines changed

2 files changed

+32
-30
lines changed

components/media_player/sources/utils_mediaplayer.cpp

+29-28
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,25 @@ static Q_LOGGING_CATEGORY(CLASS_LC, "mediaplayer utils");
3030
MediaPlayerUtils::MediaPlayerUtils() {}
3131

3232
MediaPlayerUtils::~MediaPlayerUtils() {
33-
if (m_workerThread->isRunning()) {
34-
qCDebug(CLASS_LC()) << "Destructor: Thread is running. Quitting.";
35-
m_worker->terminateWork();
36-
m_workerThread->quit();
37-
if (!m_workerThread->wait(5000)) {
38-
qCWarning(CLASS_LC()) << "Destructor: Thread didn't quit. Terminating.";
39-
m_workerThread->terminate();
40-
m_workerThread->wait();
41-
qCWarning(CLASS_LC()) << "Destructor: Thread terminated.";
42-
if (m_workerThread) {
43-
m_workerThread->deleteLater();
44-
m_workerThread = nullptr;
33+
if (m_workerThread) {
34+
if (m_workerThread->isRunning()) {
35+
qCDebug(CLASS_LC()) << "Destructor: Thread is running. Quitting.";
36+
m_worker->terminateWork();
37+
m_workerThread->quit();
38+
if (!m_workerThread->wait(5000)) {
39+
qCWarning(CLASS_LC()) << "Destructor: Thread didn't quit. Terminating.";
40+
m_workerThread->terminate();
41+
m_workerThread->wait();
42+
qCWarning(CLASS_LC()) << "Destructor: Thread terminated.";
43+
if (m_workerThread) {
44+
m_workerThread->deleteLater();
45+
}
46+
qCDebug(CLASS_LC()) << "Destructor: Thread removed and deleted";
4547
}
46-
qCDebug(CLASS_LC()) << "Destructor: Thread removed and deleted";
4748
}
4849
}
4950
if (m_worker) {
5051
m_worker->deleteLater();
51-
m_worker = nullptr;
5252
qCDebug(CLASS_LC()) << "Destructor: Worker class deleted";
5353
}
5454
}
@@ -83,30 +83,31 @@ void MediaPlayerUtils::onProcessingDone(const QColor &pixelColor, const QString
8383
m_image = largeImage;
8484
emit imageChanged();
8585

86-
if (m_workerThread->isRunning()) {
87-
m_worker->terminateWork();
88-
qCDebug(CLASS_LC()) << "Thread is running. Quitting.";
89-
m_workerThread->quit();
90-
if (!m_workerThread->wait(5000)) {
91-
qCWarning(CLASS_LC()) << "Thread didn't quit. Terminating.";
92-
m_workerThread->terminate();
93-
m_workerThread->wait();
94-
qCWarning(CLASS_LC()) << "Thread terminated.";
95-
if (m_workerThread) {
96-
m_workerThread->deleteLater();
97-
m_workerThread = nullptr;
86+
if (m_workerThread) {
87+
if (m_workerThread->isRunning()) {
88+
m_worker->terminateWork();
89+
qCDebug(CLASS_LC()) << "Thread is running. Quitting.";
90+
m_workerThread->quit();
91+
if (!m_workerThread->wait(5000)) {
92+
qCWarning(CLASS_LC()) << "Thread didn't quit. Terminating.";
93+
m_workerThread->terminate();
94+
m_workerThread->wait();
95+
qCWarning(CLASS_LC()) << "Thread terminated.";
96+
if (m_workerThread) {
97+
m_workerThread->deleteLater();
98+
}
99+
qCDebug(CLASS_LC()) << "Thread removed and deleted";
98100
}
99-
qCDebug(CLASS_LC()) << "Thread removed and deleted";
100101
}
101102
}
102103
if (m_worker) {
103104
m_worker->deleteLater();
104-
m_worker = nullptr;
105105
}
106106
qCDebug(CLASS_LC()) << "Worker class deleted";
107107
}
108108

109109
void MediaPlayerUtils::generateImages(const QString &url) {
110+
qCDebug(CLASS_LC()) << "Generate images for" << url;
110111
if (url != m_prevImageURL) {
111112
m_prevImageURL = url;
112113
emit processingStarted();

sources/yioapi.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,6 @@ bool YioAPI::removeEntity(QString entityId) {
235235
item.insert("favorites", profileEntities);
236236
profiles.insert(iter.key(), item);
237237
}
238-
m_config->setProfiles(profiles);
239238

240239
// remove from config
241240
// get the config
@@ -246,7 +245,6 @@ bool YioAPI::removeEntity(QString entityId) {
246245
for (int i = 0; i < entitiesType.length(); i++) {
247246
if (entitiesType[i].toMap().value("entity_id").toString() == entityId) {
248247
entitiesType.removeAt(i);
249-
qCDebug(CLASS_LC) << "4";
250248
break;
251249
}
252250
}
@@ -265,8 +263,11 @@ bool YioAPI::removeEntity(QString entityId) {
265263

266264
// remove from database
267265
m_entities->remove(entityId);
266+
m_config->setProfiles(profiles);
267+
qCDebug(CLASS_LC) << "Removing entity success:" << entityId;
268268
return true;
269269
} else {
270+
qCDebug(CLASS_LC) << "Removing entity failure:" << entityId;
270271
return false;
271272
}
272273
}

0 commit comments

Comments
 (0)