Some minor gamepad improvments
authorJoseph Coffland <joseph@cauldrondevelopment.com>
Mon, 21 Aug 2017 00:04:03 +0000 (17:04 -0700)
committerJoseph Coffland <joseph@cauldrondevelopment.com>
Mon, 21 Aug 2017 00:04:03 +0000 (17:04 -0700)
src/py/inevent/EventStream.py
src/py/inevent/InEvent.py

index 3a4cf6be5c8b13cf455b4b3acca5e89e2558db29..a69bb381cec5b7b670ab24f45889be693293295c 100644 (file)
@@ -29,6 +29,7 @@
 import fcntl
 import os
 import select
+import logging
 
 from inevent.Constants import *
 from inevent import ioctl
@@ -37,6 +38,8 @@ from inevent import Event
 from inevent.EventState import EventState
 
 
+log = logging.getLogger('inevent')
+
 EVIOCGRAB = ioctl._IOW(ord('E'), 0x90, "i") # Grab/Release device
 
 
@@ -160,7 +163,8 @@ class EventStream(object):
         event.decode(s)
         return event
 
-    except: pass
+    except Exception as e:
+      log.warning('Reading event: %s' % e)
 
 
   def __enter__(self): return self
index 261a5d62d03b958328f7b810210edeeb9bda241a..4a89e994311d3c6cae7dedbe0bd4a59eb746e2ff 100644 (file)
@@ -137,6 +137,7 @@ class InEvent(object):
 
   def process_udev_event(self):
     action, device = self.udevMon.receive_device()
+    if device is None: return
 
     match = re.search(r"/dev/input/event([0-9]+)", str(device.device_node))
     devIndex = match and match.group(1)
@@ -177,9 +178,7 @@ class InEvent(object):
       log.info('Added %s[%d]', devType, devIndex)
 
     except OSError as e:
-      if e.errno in [errno.EPERM, errno.EACCES]:
-        log.warning('Failed to add %s[%d]: %s', devType, devIndex, e)
-      else: raise e
+      log.warning('Failed to add %s[%d]: %s', devType, devIndex, e)
 
 
   def remove_stream(self, devIndex):
@@ -187,6 +186,7 @@ class InEvent(object):
       if stream.devIndex == devIndex:
         self.streams.remove(stream)
         self.ioloop.remove_handler(stream.filehandle)
+        stream.release()
 
         log.info('Removed %s[%d]', stream.devType, devIndex)