Skip to content

Commit bc47555

Browse files
committed
Avoid autorelease
1 parent 4e21227 commit bc47555

1 file changed

Lines changed: 13 additions & 18 deletions

File tree

SquirrelInputController.m

Lines changed: 13 additions & 18 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,8 @@ - (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, kCGAnyInputEventType);
5856
BOOL handled = NO;
5957

6058
@autoreleasepool {
@@ -82,35 +80,32 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender
8280
int release_mask = 0;
8381
NSUInteger changes = _lastModifier ^ modifiers;
8482
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);
83+
CGKeyCode keyCode = CGEventGetIntegerValueField(event.CGEvent, kCGKeyboardEventKeycode);
84+
int rime_keycode = osx_keycode_to_rime_keycode(keyCode, 0, 0, 0);
8785
_lastModifier = modifiers;
88-
uint32_t eventCount = CGEventSourceCounterForEventType(kCGEventSourceStateCombinedSessionState, kCGAnyInputEventType);
8986
if (changes & OSX_CAPITAL_MASK) {
9087
rime_modifiers ^= kLockMask;
9188
[self processKey:rime_keycode modifiers:rime_modifiers];
9289
}
9390
if (changes & OSX_SHIFT_MASK) {
94-
release_mask = modifiers & OSX_SHIFT_MASK ? 0 : kReleaseMask | (eventCount - _lastEventCount <= 1 ? 0 : kIgnoredMask);
91+
release_mask = modifiers & OSX_SHIFT_MASK ? 0 : kReleaseMask | (eventCount - _lastEventCount == 1 ? 0 : kIgnoredMask);
9592
[self processKey:rime_keycode modifiers:(rime_modifiers | release_mask)];
9693
}
9794
if (changes & OSX_CTRL_MASK) {
98-
release_mask = modifiers & OSX_CTRL_MASK ? 0 : kReleaseMask | (eventCount - _lastEventCount <= 1 ? 0 : kIgnoredMask);
95+
release_mask = modifiers & OSX_CTRL_MASK ? 0 : kReleaseMask | (eventCount - _lastEventCount == 1 ? 0 : kIgnoredMask);
9996
[self processKey:rime_keycode modifiers:(rime_modifiers | release_mask)];
10097
}
10198
if (changes & OSX_ALT_MASK) {
102-
release_mask = modifiers & OSX_ALT_MASK ? 0 : kReleaseMask | (eventCount - _lastEventCount <= 1 ? 0 : kIgnoredMask);
99+
release_mask = modifiers & OSX_ALT_MASK ? 0 : kReleaseMask | (eventCount - _lastEventCount == 1 ? 0 : kIgnoredMask);
103100
[self processKey:rime_keycode modifiers:(rime_modifiers | release_mask)];
104101
}
105102
if (changes & OSX_COMMAND_MASK) {
106-
release_mask = modifiers & OSX_COMMAND_MASK ? 0 : kReleaseMask | (eventCount - _lastEventCount <= 1 ? 0 : kIgnoredMask);
103+
release_mask = modifiers & OSX_COMMAND_MASK ? 0 : kReleaseMask | (eventCount - _lastEventCount == 1 ? 0 : kIgnoredMask);
107104
[self processKey:rime_keycode modifiers:(rime_modifiers | release_mask)];
108-
_lastEventCount = eventCount;
109105
// do not update UI when using Command key
110-
break;
106+
goto saveStatus;
111107
}
112108
[self rimeUpdate];
113-
_lastEventCount = eventCount;
114109
} break;
115110
case NSEventTypeKeyDown: {
116111
// ignore Command+X hotkeys.
@@ -139,10 +134,10 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender
139134
break;
140135
}
141136
}
142-
143-
_lastModifier = modifiers;
144-
_lastEventType = event.type;
145-
137+
saveStatus: if (event.type == NSEventTypeFlagsChanged) {
138+
_lastModifier = modifiers;
139+
_lastEventCount = eventCount;
140+
}
146141
return handled;
147142
}
148143

0 commit comments

Comments
 (0)