- commit
- 0e43a4cf052dca747d0113f348fcb925d33b4326
- parent
- cba68600f4760b5d3ac6870ae35dae2c8e2ffa3d
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2020-09-05 16:25
use selectors instead of select
Diffstat
| M | cplay.py | 43 | ++++++++++++++++++++----------------------- |
1 files changed, 20 insertions, 23 deletions
diff --git a/cplay.py b/cplay.py
@@ -3,7 +3,7 @@ import functools 3 3 import os 4 4 import random 5 5 import re6 -1 import select-1 6 import selectors 7 7 import signal 8 8 import subprocess 9 9 import sys @@ -678,31 +678,28 @@ class Application: 678 678 self.refresh_dimensions() 679 679 self.render() 680 680681 -1 while True:682 -1 player.finish_seek()683 -1684 -1 timeout = 0.5 if player.is_playing() else None685 -1 try:686 -1 r, _w, _e = select.select([687 -1 sys.stdin,688 -1 self.resize_in,689 -1 player.stderr_r,690 -1 ], [], [], timeout)691 -1 except select.error:692 -1 continue-1 681 with selectors.DefaultSelector() as sel: -1 682 sel.register(sys.stdin, selectors.EVENT_READ) -1 683 sel.register(self.resize_in, selectors.EVENT_READ) -1 684 sel.register(player.stderr_r, selectors.EVENT_READ) -1 685 -1 686 while True: -1 687 player.finish_seek() 693 688694 -1 if self.resize_in in r:695 -1 os.read(self.resize_in, 8)696 -1 self.on_resize()697 -1 if sys.stdin in r:698 -1 self.process_key(screen.get_wch())699 -1 if player.stderr_r in r:700 -1 player.parse_progress(player.stderr_r)-1 689 timeout = 0.5 if player.is_playing() else None -1 690 for key, mask in sel.select(timeout): -1 691 if key.fileobj is self.resize_in: -1 692 os.read(self.resize_in, 8) -1 693 self.on_resize() -1 694 elif key.fileobj is sys.stdin: -1 695 self.process_key(screen.get_wch()) -1 696 elif key.fileobj is player.stderr_r: -1 697 player.parse_progress(player.stderr_r) 701 698702 -1 if player.is_finished():703 -1 player.play(playlist.next())-1 699 if player.is_finished(): -1 700 player.play(playlist.next()) 704 701705 -1 self.render()-1 702 self.render() 706 703 707 704 708 705 player = Player()