Merge pull request #242 from honboubao/key-memory

reduce Key objects memory footprint
This commit is contained in:
Josh Klar 2021-09-20 23:29:38 +00:00 committed by GitHub
commit 7b1d3f17c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -401,10 +401,6 @@ class Key:
self.no_press = bool(no_press) self.no_press = bool(no_press)
self.no_release = bool(no_press) self.no_release = bool(no_press)
self._pre_press_handlers = []
self._post_press_handlers = []
self._pre_release_handlers = []
self._post_release_handlers = []
self._handle_press = on_press self._handle_press = on_press
self._handle_release = on_release self._handle_release = on_release
self.meta = meta self.meta = meta
@ -424,26 +420,30 @@ class Key:
return 'Key(code={}, has_modifiers={})'.format(self.code, self.has_modifiers) return 'Key(code={}, has_modifiers={})'.format(self.code, self.has_modifiers)
def on_press(self, state, coord_int, coord_raw): def on_press(self, state, coord_int, coord_raw):
for fn in self._pre_press_handlers: if hasattr(self, '_pre_press_handlers'):
if not fn(self, state, KC, coord_int, coord_raw): for fn in self._pre_press_handlers:
return None if not fn(self, state, KC, coord_int, coord_raw):
return None
ret = self._handle_press(self, state, KC, coord_int, coord_raw) ret = self._handle_press(self, state, KC, coord_int, coord_raw)
for fn in self._post_press_handlers: if hasattr(self, '_post_press_handlers'):
fn(self, state, KC, coord_int, coord_raw) for fn in self._post_press_handlers:
fn(self, state, KC, coord_int, coord_raw)
return ret return ret
def on_release(self, state, coord_int, coord_raw): def on_release(self, state, coord_int, coord_raw):
for fn in self._pre_release_handlers: if hasattr(self, '_pre_release_handlers'):
if not fn(self, state, KC, coord_int, coord_raw): for fn in self._pre_release_handlers:
return None if not fn(self, state, KC, coord_int, coord_raw):
return None
ret = self._handle_release(self, state, KC, coord_int, coord_raw) ret = self._handle_release(self, state, KC, coord_int, coord_raw)
for fn in self._post_release_handlers: if hasattr(self, '_post_release_handlers'):
fn(self, state, KC, coord_int, coord_raw) for fn in self._post_release_handlers:
fn(self, state, KC, coord_int, coord_raw)
return ret return ret
@ -485,6 +485,8 @@ class Key:
calls of this method will be executed before those provided by later calls. calls of this method will be executed before those provided by later calls.
''' '''
if not hasattr(self, '_pre_press_handlers'):
self._pre_press_handlers = []
self._pre_press_handlers.append(fn) self._pre_press_handlers.append(fn)
return self return self
@ -508,6 +510,8 @@ class Key:
calls of this method will be executed before those provided by later calls. calls of this method will be executed before those provided by later calls.
''' '''
if not hasattr(self, '_post_press_handlers'):
self._post_press_handlers = []
self._post_press_handlers.append(fn) self._post_press_handlers.append(fn)
return self return self
@ -532,6 +536,8 @@ class Key:
calls of this method will be executed before those provided by later calls. calls of this method will be executed before those provided by later calls.
''' '''
if not hasattr(self, '_pre_release_handlers'):
self._pre_release_handlers = []
self._pre_release_handlers.append(fn) self._pre_release_handlers.append(fn)
return self return self
@ -555,6 +561,8 @@ class Key:
calls of this method will be executed before those provided by later calls. calls of this method will be executed before those provided by later calls.
''' '''
if not hasattr(self, '_post_release_handlers'):
self._post_release_handlers = []
self._post_release_handlers.append(fn) self._post_release_handlers.append(fn)
return self return self