mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-06 22:54:16 +02:00
[view.core.controller] fix: search sometimes hanging when there is only one package type enabled
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user