aboutsummaryrefslogtreecommitdiff
path: root/src/carbon.c
diff options
context:
space:
mode:
authorkoekeishiya <aasvi93@hotmail.com>2018-08-30 17:04:22 +0200
committerkoekeishiya <aasvi93@hotmail.com>2018-08-30 17:04:22 +0200
commitb5a35a9bcbf237cb86105c556b535fb689d4834c (patch)
treeba7d1130ebdfca5d2fe78160c8669da5aa6592cc /src/carbon.c
parent6f55631142457b6865e955bc2f204525027d4d4f (diff)
downloadskhd-b5a35a9bcbf237cb86105c556b535fb689d4834c.tar.gz
skhd-b5a35a9bcbf237cb86105c556b535fb689d4834c.zip
cleanup and set active app on init
Diffstat (limited to 'src/carbon.c')
-rw-r--r--src/carbon.c42
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,