diff --git a/src/Mod/AddonManager/AddonManager.py b/src/Mod/AddonManager/AddonManager.py index ed607f492679..08342febc690 100644 --- a/src/Mod/AddonManager/AddonManager.py +++ b/src/Mod/AddonManager/AddonManager.py @@ -304,6 +304,11 @@ def show(self,idx): # kill existing show worker (might still be busy loading images...) if self.show_worker: self.show_worker.exit() + self.show_worker.stopImageLoading() + # wait until the thread stops + while True: + if self.show_worker.isFinished(): + break self.show_worker = ShowWorker(self.repos, idx) self.show_worker.info_label.connect(self.show_information) self.show_worker.addon_repos.connect(self.update_repos) diff --git a/src/Mod/AddonManager/addonmanager_workers.py b/src/Mod/AddonManager/addonmanager_workers.py index 520cf8bd1034..8c7a96368562 100644 --- a/src/Mod/AddonManager/addonmanager_workers.py +++ b/src/Mod/AddonManager/addonmanager_workers.py @@ -407,13 +407,20 @@ def run(self): self.info_label.emit( message ) self.progressbar_show.emit(False) + self.mustLoadImages = True l = self.loadImages( message, self.repos[self.idx][1], self.repos[self.idx][0]) if l: self.info_label.emit( l ) self.stop = True + def stopImageLoading(self): + + "this stops the image loading process and allow the thread to terminate earlier" + + self.mustLoadImages = False + def loadImages(self,message,url,wbName): - + "checks if the given page contains images and downloads them" # QTextBrowser cannot display online images. So we download them @@ -427,6 +434,8 @@ def loadImages(self,message,url,wbName): if not os.path.exists(store): os.makedirs(store) for path in imagepaths: + if not self.mustLoadImages: + return None origpath = path if "?" in path: # remove everything after the ?