Dont spam resize_pty events, include a small timeout

This commit is contained in:
Kovid Goyal 2017-09-09 14:37:59 +05:30
parent 99acc4adcb
commit 92d53daf22
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 4 additions and 4 deletions

View File

@ -148,7 +148,7 @@ class Boss:
w = self.window_id_map.get(window_id)
if w is not None:
if not self.child_monitor.resize_pty(window_id, *w.current_pty_size):
return 0.0 # re-add this timer
return 0.002 # re-add this timer
def on_child_death(self, window_id):
w = self.window_id_map.pop(window_id, None)

View File

@ -80,15 +80,15 @@ class Window:
return
if self.needs_layout or new_geometry.xnum != self.screen.columns or new_geometry.ynum != self.screen.lines:
boss = get_boss()
child_monitor = boss.child_monitor
self.screen.resize(new_geometry.ynum, new_geometry.xnum)
self.current_pty_size = (
self.screen.lines, self.screen.columns,
max(0, new_geometry.right - new_geometry.left), max(0, new_geometry.bottom - new_geometry.top))
self.char_grid.resize(new_geometry)
self.needs_layout = False
if not child_monitor.resize_pty(self.id, *self.current_pty_size):
boss.ui_timers.add(0, boss.retry_resize_pty, self.id)
timeout = boss.retry_resize_pty(self.id)
if timeout is not None:
boss.ui_timers.add(timeout, boss.retry_resize_pty, self.id)
else:
self.char_grid.update_position(new_geometry)
self.geometry = new_geometry