Reduce interface stutters when the nearest placeholder is far away.
- Achieved by making the placeholder generator asynchronous.
This commit is contained in:
parent
48fc34c632
commit
2c402a683a
2 changed files with 7 additions and 6 deletions
|
|
@ -319,7 +319,7 @@ class Summary:
|
|||
os.remove(result.pickle_path)
|
||||
self.sort_entries()
|
||||
|
||||
def _placeholder_spiral(self):
|
||||
async def _placeholder_spiral(self):
|
||||
x, y = self.cursor_position()
|
||||
result = self._column[y][x]
|
||||
if result.is_placeholder:
|
||||
|
|
@ -334,15 +334,16 @@ class Summary:
|
|||
result = self._column[y][x]
|
||||
except IndexError:
|
||||
continue
|
||||
await asyncio.sleep(0)
|
||||
if result.is_placeholder:
|
||||
yield result
|
||||
|
||||
def get_closest_placeholder(self):
|
||||
async def get_closest_placeholder(self):
|
||||
try:
|
||||
return self.closest_placeholder_generator.send(None)
|
||||
return await self.closest_placeholder_generator.asend(None)
|
||||
except AttributeError:
|
||||
self.closest_placeholder_generator = self._placeholder_spiral()
|
||||
return self.closest_placeholder_generator.send(None)
|
||||
return await self.closest_placeholder_generator.asend(None)
|
||||
|
||||
def appearance_dimensions(self):
|
||||
return self._max_path_length + 1 + self._max_width, len(self._column)
|
||||
|
|
|
|||
|
|
@ -44,8 +44,8 @@ class Worker:
|
|||
await jobs_added_event.wait()
|
||||
while True:
|
||||
try:
|
||||
self.result = summary.get_closest_placeholder()
|
||||
except StopIteration:
|
||||
self.result = await summary.get_closest_placeholder()
|
||||
except StopAsyncIteration:
|
||||
self.result = None
|
||||
if summary.result_total == summary.completed_total:
|
||||
log.log_message("All results are up to date.")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue