@@ -241,14 +241,16 @@ cdef class Loop:
241
241
self ._debug_exception_handler_cnt = 0
242
242
243
243
cdef _setup_signals(self ):
244
+ cdef int old_wakeup_fd
245
+
244
246
if self ._listening_signals:
245
247
return
246
248
247
249
self ._ssock, self ._csock = socket_socketpair()
248
250
self ._ssock.setblocking(False )
249
251
self ._csock.setblocking(False )
250
252
try :
251
- _set_signal_wakeup_fd(self ._csock.fileno())
253
+ old_wakeup_fd = _set_signal_wakeup_fd(self ._csock.fileno())
252
254
except (OSError , ValueError ):
253
255
# Not the main thread
254
256
self ._ssock.close()
@@ -257,10 +259,12 @@ cdef class Loop:
257
259
return
258
260
259
261
self ._listening_signals = True
262
+ return old_wakeup_fd
260
263
261
264
cdef _recv_signals_start(self ):
265
+ cdef object old_wakeup_fd = None
262
266
if self ._ssock is None :
263
- self ._setup_signals()
267
+ old_wakeup_fd = self ._setup_signals()
264
268
if self ._ssock is None :
265
269
# Not the main thread.
266
270
return
@@ -272,6 +276,7 @@ cdef class Loop:
272
276
" Loop._read_from_self" ,
273
277
< method_t> self ._read_from_self,
274
278
self ))
279
+ return old_wakeup_fd
275
280
276
281
cdef _recv_signals_stop(self ):
277
282
if self ._ssock is None :
@@ -445,6 +450,7 @@ cdef class Loop:
445
450
446
451
cdef _run(self , uv.uv_run_mode mode):
447
452
cdef int err
453
+ cdef object old_wakeup_fd
448
454
449
455
if self ._closed == 1 :
450
456
raise RuntimeError (' unable to start the loop; it was closed' )
@@ -467,7 +473,7 @@ cdef class Loop:
467
473
self .handler_check__exec_writes.start()
468
474
self .handler_idle.start()
469
475
470
- self ._recv_signals_start()
476
+ old_wakeup_fd = self ._recv_signals_start()
471
477
472
478
if aio_set_running_loop is not None :
473
479
aio_set_running_loop(self )
@@ -478,6 +484,8 @@ cdef class Loop:
478
484
aio_set_running_loop(None )
479
485
480
486
self ._recv_signals_stop()
487
+ if old_wakeup_fd is not None :
488
+ signal_set_wakeup_fd(old_wakeup_fd)
481
489
482
490
self .handler_check__exec_writes.stop()
483
491
self .handler_idle.stop()
@@ -3218,9 +3226,9 @@ cdef __install_pymem():
3218
3226
3219
3227
cdef _set_signal_wakeup_fd(fd):
3220
3228
if PY37 and fd >= 0 :
3221
- signal_set_wakeup_fd(fd, warn_on_full_buffer = False )
3229
+ return signal_set_wakeup_fd(fd, warn_on_full_buffer = False )
3222
3230
else :
3223
- signal_set_wakeup_fd(fd)
3231
+ return signal_set_wakeup_fd(fd)
3224
3232
3225
3233
3226
3234
cdef _warn_with_source(msg, cls , source):
0 commit comments