Skip to content

Commit 1fd4ef6

Browse files
author
Tony Crisci
committed
add timeout param to main loop
1 parent 72f2399 commit 1fd4ef6

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

i3ipc/i3ipc.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import subprocess
1010
from enum import Enum
1111
from collections import deque
12-
12+
from threading import Timer
1313

1414
class MessageType(Enum):
1515
COMMAND = 0
@@ -272,7 +272,7 @@ def subscribe(self, detailed_event, handler):
272272
'handler': handler})
273273

274274
def unsubscribe(self, handler):
275-
self._subscriptions = list(filter(lambda s: s['handler'] != handler, self._subscriptions))
275+
self._subscriptions = list(filter(lambda s: s['handler'] is handler, self._subscriptions))
276276

277277
def emit(self, event, data):
278278
detail = ''
@@ -632,12 +632,20 @@ def event_socket_poll(self):
632632

633633
self._pubsub.emit(event_name, event)
634634

635-
def main(self):
635+
def main(self, timeout=0):
636636
self.event_socket_setup()
637637

638+
timer = None
639+
640+
if timeout:
641+
timer = Timer(timeout, self.main_quit).start()
642+
638643
while not self.event_socket_poll():
639644
pass
640645

646+
if timer:
647+
timer.cancel()
648+
641649
def main_quit(self):
642650
self.event_socket_teardown()
643651

0 commit comments

Comments
 (0)