Skip to content

Commit 0de0b31

Browse files
committed
Avoid autorelease
1 parent 4e21227 commit 0de0b31

1 file changed

Lines changed: 10 additions & 14 deletions

File tree

SquirrelInputController.m

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ @implementation SquirrelInputController {
2424
NSUInteger _caretPos;
2525
NSArray *_candidates;
2626
NSUInteger _lastModifier;
27-
NSEventType _lastEventType;
2827
uint32_t _lastEventCount;
2928
RimeSessionId _session;
3029
NSString *_schemaId;
@@ -52,9 +51,9 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender
5251
// Returning NO means the original key down will be passed on to the client.
5352

5453
_currentClient = sender;
55-
56-
CGEventFlags modifiers = CGEventGetFlags(event.CGEvent);
57-
54+
NSEventModifierFlags modifiers = event.modifierFlags & NSEventModifierFlagDeviceIndependentFlagsMask;
55+
uint32_t eventCount = CGEventSourceCounterForEventType(kCGEventSourceStateCombinedSessionState,
56+
kCGEventFlagsChanged|kCGEventLeftMouseDown|kCGEventRightMouseDown|kCGEventOtherMouseDown);
5857
BOOL handled = NO;
5958

6059
@autoreleasepool {
@@ -82,10 +81,9 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender
8281
int release_mask = 0;
8382
NSUInteger changes = _lastModifier ^ modifiers;
8483
int rime_modifiers = osx_modifiers_to_rime_modifiers(modifiers);
85-
int64_t keyCode = CGEventGetIntegerValueField(event.CGEvent, kCGKeyboardEventKeycode);
86-
int rime_keycode = osx_keycode_to_rime_keycode((int)keyCode, 0, 0, 0);
84+
CGKeyCode keyCode = CGEventGetIntegerValueField(event.CGEvent, kCGKeyboardEventKeycode);
85+
int rime_keycode = osx_keycode_to_rime_keycode(keyCode, 0, 0, 0);
8786
_lastModifier = modifiers;
88-
uint32_t eventCount = CGEventSourceCounterForEventType(kCGEventSourceStateCombinedSessionState, kCGAnyInputEventType);
8987
if (changes & OSX_CAPITAL_MASK) {
9088
rime_modifiers ^= kLockMask;
9189
[self processKey:rime_keycode modifiers:rime_modifiers];
@@ -105,12 +103,10 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender
105103
if (changes & OSX_COMMAND_MASK) {
106104
release_mask = modifiers & OSX_COMMAND_MASK ? 0 : kReleaseMask | (eventCount - _lastEventCount <= 1 ? 0 : kIgnoredMask);
107105
[self processKey:rime_keycode modifiers:(rime_modifiers | release_mask)];
108-
_lastEventCount = eventCount;
109106
// do not update UI when using Command key
110-
break;
107+
goto saveStatus;
111108
}
112109
[self rimeUpdate];
113-
_lastEventCount = eventCount;
114110
} break;
115111
case NSEventTypeKeyDown: {
116112
// ignore Command+X hotkeys.
@@ -139,10 +135,10 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender
139135
break;
140136
}
141137
}
142-
143-
_lastModifier = modifiers;
144-
_lastEventType = event.type;
145-
138+
saveStatus: if (event.type == NSEventTypeFlagsChanged) {
139+
_lastModifier = modifiers;
140+
_lastEventCount = eventCount;
141+
}
146142
return handled;
147143
}
148144

0 commit comments

Comments
 (0)