From d4ef2ca34645e8d0caa43f8bad5da76e64058740 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Thu, 20 Sep 2018 14:18:07 +0200 Subject: [PATCH] add some threadsafety Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/53b767f2d43db2a89a67ed159a57a4281cbf7b21 Author: TangoCash Date: 2018-09-20 (Thu, 20 Sep 2018) --- src/zapit/src/bouquets.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/zapit/src/bouquets.cpp b/src/zapit/src/bouquets.cpp index f02f250a2..891fd0edb 100644 --- a/src/zapit/src/bouquets.cpp +++ b/src/zapit/src/bouquets.cpp @@ -808,6 +808,15 @@ void CBouquetManager::clearAll(bool user) if (!user) Bouquets = tmplist; remainChannels = NULL; + if(thrLogo != 0) + { + pthread_cancel(thrLogo); + pthread_join(thrLogo, NULL); + thrLogo = 0; + } + pthread_mutex_lock (&mutex); + LogoList.clear(); + pthread_mutex_unlock (&mutex); } void CBouquetManager::deletePosition(t_satellite_position satellitePosition) @@ -1042,7 +1051,9 @@ void CBouquetManager::loadWebchannels(int mode) if (!alogo.empty()) { channel->setAlternateLogo(alogo); + pthread_mutex_lock (&mutex); LogoList.push_back(channel); + pthread_mutex_unlock (&mutex); } channel->flags = CZapitChannel::UPDATED; if (gbouquet) @@ -1135,6 +1146,7 @@ void CBouquetManager::loadLogos() void* CBouquetManager::LogoThread(void* _logolist) { set_threadname(__func__); + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); pthread_mutex_lock (&mutex); ZapitChannelList *LogoList = (ZapitChannelList *)_logolist; for (ZapitChannelList::iterator it = LogoList->begin(); it != LogoList->end(); ++it)