diff options
author | koekeishiya <aasvi93@hotmail.com> | 2018-08-30 17:04:22 +0200 |
---|---|---|
committer | koekeishiya <aasvi93@hotmail.com> | 2018-08-30 17:04:22 +0200 |
commit | b5a35a9bcbf237cb86105c556b535fb689d4834c (patch) | |
tree | ba7d1130ebdfca5d2fe78160c8669da5aa6592cc /src/carbon.c | |
parent | 6f55631142457b6865e955bc2f204525027d4d4f (diff) | |
download | skhd-b5a35a9bcbf237cb86105c556b535fb689d4834c.tar.gz skhd-b5a35a9bcbf237cb86105c556b535fb689d4834c.zip |
cleanup and set active app on init
Diffstat (limited to '')
-rw-r--r-- | src/carbon.c | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/src/carbon.c b/src/carbon.c index d722104..043685b 100644 --- a/src/carbon.c +++ b/src/carbon.c @@ -4,6 +4,28 @@ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated" +internal inline char * +find_process_name_for_psn(ProcessSerialNumber *psn) +{ + CFStringRef process_name_ref; + if (CopyProcessName(psn, &process_name_ref) == noErr) { + char *process_name = copy_cfstring(process_name_ref); + for (char *s = process_name; *s; ++s) *s = tolower(*s); + CFRelease(process_name_ref); + return process_name; + } + return NULL; +} + +internal inline char * +find_active_process_name(void) +{ + ProcessSerialNumber psn; + GetFrontProcess(&psn); + return find_process_name_for_psn(&psn); +} +#pragma clang diagnostic pop + internal OSStatus carbon_event_handler(EventHandlerCallRef ref, EventRef event, void *context) { @@ -20,22 +42,15 @@ carbon_event_handler(EventHandlerCallRef ref, EventRef event, void *context) return -1; } - CFStringRef process_name_ref; - if (CopyProcessName(&psn, &process_name_ref) == noErr) { - if (carbon->process_name) { - free(carbon->process_name); - carbon->process_name = NULL; - } - - carbon->process_name = copy_cfstring(process_name_ref); - for (char *s = carbon->process_name; *s; ++s) *s = tolower(*s); - - CFRelease(process_name_ref); + if (carbon->process_name) { + free(carbon->process_name); + carbon->process_name = NULL; } + carbon->process_name = find_process_name_for_psn(&psn); + return noErr; } -#pragma clang diagnostic pop bool carbon_event_init(struct carbon_event *carbon) { @@ -43,7 +58,8 @@ bool carbon_event_init(struct carbon_event *carbon) carbon->handler = NewEventHandlerUPP(carbon_event_handler); carbon->type.eventClass = kEventClassApplication; carbon->type.eventKind = kEventAppFrontSwitched; - carbon->process_name = NULL; + carbon->process_name = find_active_process_name(); + printf("active %s\n", carbon->process_name); return InstallEventHandler(carbon->target, carbon->handler, |