[view.core.controller] fix: search sometimes hanging when there is only one package type enabled

This commit is contained in:
Vinicius Moreira
2023-11-16 14:46:35 -03:00
parent c8186745eb
commit 969ce1cfb2
2 changed files with 12 additions and 10 deletions

View File

@@ -14,6 +14,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Fixes ### Fixes
- AppImage - AppImage
- upgrade fails when the package was initially imported, but later added to bauh's database [#321](https://github.com/vinifmor/bauh/issues/321) - upgrade fails when the package was initially imported, but later added to bauh's database [#321](https://github.com/vinifmor/bauh/issues/321)
- General
- search sometimes hanging when there is only one package type enabled
### Contributions ### Contributions
- German translations by [Mape6](https://github.com/Mape6) - German translations by [Mape6](https://github.com/Mape6)

View File

@@ -144,14 +144,13 @@ class GenericSoftwareManager(SoftwareManager, SettingsController):
return available return available
def _search(self, word: str, is_url: bool, man: SoftwareManager, disk_loader, res: SearchResult): def _search(self, word: str, is_url: bool, man: SoftwareManager, disk_loader, res: SearchResult):
if self._can_work(man): mti = time.time()
mti = time.time() apps_found = man.search(words=word, disk_loader=disk_loader, is_url=is_url, limit=-1)
apps_found = man.search(words=word, disk_loader=disk_loader, is_url=is_url, limit=-1) mtf = time.time()
mtf = time.time() self.logger.info(f'{man.__class__.__name__} took {mtf - mti:.8f} seconds')
self.logger.info(f'{man.__class__.__name__} took {mtf - mti:.8f} seconds')
res.installed.extend(apps_found.installed) res.installed.extend(apps_found.installed)
res.new.extend(apps_found.new) res.new.extend(apps_found.new)
def search(self, words: str, disk_loader: DiskCacheLoader = None, limit: int = -1, is_url: bool = False) -> SearchResult: def search(self, words: str, disk_loader: DiskCacheLoader = None, limit: int = -1, is_url: bool = False) -> SearchResult:
ti = time.time() ti = time.time()
@@ -171,9 +170,10 @@ class GenericSoftwareManager(SoftwareManager, SettingsController):
threads = [] threads = []
for man in self.managers: for man in self.managers:
t = Thread(target=self._search, args=(norm_query, is_url, man, disk_loader, res)) if self._can_work(man):
t.start() t = Thread(target=self._search, args=(norm_query, is_url, man, disk_loader, res))
threads.append(t) t.start()
threads.append(t)
for t in threads: for t in threads:
t.join() t.join()