Browse Source

Allow using Panda without 'signal' module in platforms that do not have one (eg. JavaScript)

rdb 10 years ago
parent
commit
f87785d2c0
2 changed files with 11 additions and 6 deletions
  1. 0 2
      direct/src/showbase/PythonUtil.py
  2. 11 4
      direct/src/task/Task.py

+ 0 - 2
direct/src/showbase/PythonUtil.py

@@ -49,8 +49,6 @@ import traceback
 import __builtin__
 from StringIO import StringIO
 import marshal
-import unicodedata
-import bisect
 
 __report_indent = 3
 

+ 11 - 4
direct/src/task/Task.py

@@ -10,12 +10,16 @@ from direct.directnotify.DirectNotifyGlobal import *
 from direct.showbase import ExceptionVarDump
 from direct.showbase.PythonUtil import *
 from direct.showbase.MessengerGlobal import messenger
-import signal
 import types
 import time
 import random
 import string
 
+try:
+    import signal
+except ImportError:
+    signal = None
+
 from panda3d.core import *
 
 def print_exc_plus():
@@ -149,7 +153,8 @@ class TaskManager:
     def invokeDefaultHandler(self, signalNumber, stackFrame):
         print '*** allowing mid-frame keyboard interrupt.'
         # Restore default interrupt handler
-        signal.signal(signal.SIGINT, signal.default_int_handler)
+        if signal:
+            signal.signal(signal.SIGINT, signal.default_int_handler)
         # and invoke it
         raise KeyboardInterrupt
 
@@ -454,7 +459,8 @@ class TaskManager:
         # after task list processing is complete.
         self.fKeyboardInterrupt = 0
         self.interruptCount = 0
-        signal.signal(signal.SIGINT, self.keyboardInterruptHandler)
+        if signal:
+            signal.signal(signal.SIGINT, self.keyboardInterruptHandler)
 
         startFrameTime = self.globalClock.getRealTime()
 
@@ -465,7 +471,8 @@ class TaskManager:
         self.doYield(startFrameTime, nextTaskTime)
 
         # Restore default interrupt handler
-        signal.signal(signal.SIGINT, signal.default_int_handler)
+        if signal:
+            signal.signal(signal.SIGINT, signal.default_int_handler)
         if self.fKeyboardInterrupt:
             raise KeyboardInterrupt