From b5967bb2e1943a17b5c55ee83db90a9f44732844 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Mon, 10 Oct 2016 22:33:00 -0700 Subject: [PATCH] Fix HotKey initialization to deinitialize any existing instances, as the global hash table is not reference counted, and the previous design would result in the hash table being set twice, then cleared. --- Application/AppController.m | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/Application/AppController.m b/Application/AppController.m index f9899c907..920e265de 100644 --- a/Application/AppController.m +++ b/Application/AppController.m @@ -413,36 +413,41 @@ } } +/* Unassign previous handler first, so dealloc can unregister it from the global map before the new instances are assigned */ - (void)registerHotKeys { if ([[[[NSUserDefaultsController sharedUserDefaultsController] defaults] objectForKey:@"hotKeyPlayModifiers"] intValue]) { - playHotKey = [[NDHotKeyEvent alloc] - initWithKeyCode: [[[[NSUserDefaultsController sharedUserDefaultsController] defaults] objectForKey:@"hotKeyPlayKeyCode"] intValue] - modifierFlags: [[[[NSUserDefaultsController sharedUserDefaultsController] defaults] objectForKey:@"hotKeyPlayModifiers"] intValue] - ]; + playHotKey = nil; + playHotKey = [[NDHotKeyEvent alloc] + initWithKeyCode: [[[[NSUserDefaultsController sharedUserDefaultsController] defaults] objectForKey:@"hotKeyPlayKeyCode"] intValue] + modifierFlags: [[[[NSUserDefaultsController sharedUserDefaultsController] defaults] objectForKey:@"hotKeyPlayModifiers"] intValue] + ]; [playHotKey setTarget:self selector:@selector(clickPlay)]; [playHotKey setEnabled:YES]; } if ([[[[NSUserDefaultsController sharedUserDefaultsController] defaults] objectForKey:@"hotKeyPreviousModifiers"] intValue]) { - prevHotKey = [[NDHotKeyEvent alloc] - initWithKeyCode: [[NSUserDefaults standardUserDefaults] integerForKey:@"hotKeyPreviousKeyCode"] - modifierFlags: [[NSUserDefaults standardUserDefaults] integerForKey:@"hotKeyPreviousModifiers"] - ]; + prevHotKey = nil; + prevHotKey = [[NDHotKeyEvent alloc] + initWithKeyCode: [[NSUserDefaults standardUserDefaults] integerForKey:@"hotKeyPreviousKeyCode"] + modifierFlags: [[NSUserDefaults standardUserDefaults] integerForKey:@"hotKeyPreviousModifiers"] + ]; [prevHotKey setTarget:self selector:@selector(clickPrev)]; [prevHotKey setEnabled:YES]; } if ([[[[NSUserDefaultsController sharedUserDefaultsController] defaults] objectForKey:@"hotKeyNextModifiers"] intValue]) { - nextHotKey = [[NDHotKeyEvent alloc] - initWithKeyCode: [[NSUserDefaults standardUserDefaults] integerForKey:@"hotKeyNextKeyCode"] - modifierFlags: [[NSUserDefaults standardUserDefaults] integerForKey:@"hotKeyNextModifiers"] - ]; + nextHotKey = nil; + nextHotKey = [[NDHotKeyEvent alloc] + initWithKeyCode: [[NSUserDefaults standardUserDefaults] integerForKey:@"hotKeyNextKeyCode"] + modifierFlags: [[NSUserDefaults standardUserDefaults] integerForKey:@"hotKeyNextModifiers"] + ]; [nextHotKey setTarget:self selector:@selector(clickNext)]; [nextHotKey setEnabled:YES]; } if ([[[[NSUserDefaultsController sharedUserDefaultsController] defaults] objectForKey:@"hotKeySpamModifiers"] intValue]) { + spamHotKey = nil; spamHotKey = [[NDHotKeyEvent alloc] initWithKeyCode: [[NSUserDefaults standardUserDefaults] integerForKey:@"hotKeySpamKeyCode"] modifierFlags: [[NSUserDefaults standardUserDefaults] integerForKey:@"hotKeySpamModifiers"]