Skip to content

Commit

Permalink
Avoid autorelease
Browse files Browse the repository at this point in the history
  • Loading branch information
groverlynn committed May 18, 2023
1 parent 4e21227 commit 4453c13
Showing 1 changed file with 9 additions and 14 deletions.
23 changes: 9 additions & 14 deletions SquirrelInputController.m
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ @implementation SquirrelInputController {
NSUInteger _caretPos;
NSArray *_candidates;
NSUInteger _lastModifier;
NSEventType _lastEventType;
uint32_t _lastEventCount;
RimeSessionId _session;
NSString *_schemaId;
Expand Down Expand Up @@ -52,9 +51,8 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender
// Returning NO means the original key down will be passed on to the client.

_currentClient = sender;

CGEventFlags modifiers = CGEventGetFlags(event.CGEvent);

NSEventModifierFlags modifiers = event.modifierFlags & NSEventModifierFlagDeviceIndependentFlagsMask;
uint32_t eventCount = CGEventSourceCounterForEventType(kCGEventSourceStateCombinedSessionState, kCGAnyInputEventType);
BOOL handled = NO;

@autoreleasepool {
Expand Down Expand Up @@ -82,10 +80,9 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender
int release_mask = 0;
NSUInteger changes = _lastModifier ^ modifiers;
int rime_modifiers = osx_modifiers_to_rime_modifiers(modifiers);
int64_t keyCode = CGEventGetIntegerValueField(event.CGEvent, kCGKeyboardEventKeycode);
int rime_keycode = osx_keycode_to_rime_keycode((int)keyCode, 0, 0, 0);
CGKeyCode keyCode = CGEventGetIntegerValueField(event.CGEvent, kCGKeyboardEventKeycode);
int rime_keycode = osx_keycode_to_rime_keycode(keyCode, 0, 0, 0);
_lastModifier = modifiers;
uint32_t eventCount = CGEventSourceCounterForEventType(kCGEventSourceStateCombinedSessionState, kCGAnyInputEventType);
if (changes & OSX_CAPITAL_MASK) {
rime_modifiers ^= kLockMask;
[self processKey:rime_keycode modifiers:rime_modifiers];
Expand All @@ -105,12 +102,10 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender
if (changes & OSX_COMMAND_MASK) {
release_mask = modifiers & OSX_COMMAND_MASK ? 0 : kReleaseMask | (eventCount - _lastEventCount <= 1 ? 0 : kIgnoredMask);
[self processKey:rime_keycode modifiers:(rime_modifiers | release_mask)];
_lastEventCount = eventCount;
// do not update UI when using Command key
break;
goto saveStatus;
}
[self rimeUpdate];
_lastEventCount = eventCount;
} break;
case NSEventTypeKeyDown: {
// ignore Command+X hotkeys.
Expand Down Expand Up @@ -139,10 +134,10 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender
break;
}
}

_lastModifier = modifiers;
_lastEventType = event.type;

saveStatus: if (event.type == NSEventTypeFlagsChanged) {
_lastModifier = modifiers;
_lastEventCount = eventCount;
}
return handled;
}

Expand Down

0 comments on commit 4453c13

Please sign in to comment.