fix one too small
[RRG-proxmark3.git] / client / src / util_darwin.m
blob7e98e6414fba3283c19f2c00f2625cf60a61904e
1 //-----------------------------------------------------------------------------
2 // Copyright (C) Proxmark3 contributors. See AUTHORS.md for details.
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
14 // See LICENSE.txt for the text of the license.
15 //-----------------------------------------------------------------------------
16 // macOS framework bindings
17 //-----------------------------------------------------------------------------
19 #import "util_darwin.h"
21 #import <Foundation/NSString.h>
22 #import <Foundation/NSProcessInfo.h>
24 #if TARGET_OS_IOS
25 #import <UIKit/UIKit.h>
26 #else
27 #import <AppKit/NSApplication.h>
28 #endif
30 #if !defined(USING_ARC)
31 #  if __has_feature(objc_arc)
32 #     define USING_ARC 1
33 #  else
34 #    define USING_ARC 0
35 #  endif
36 #elif EMPTY_DEFINE(USING_ARC)
37 #   undef USING_ARC
38 #   define USING_ARC 1
39 #endif
41 static id activity = nil;
43 //OS X Version 10.10 is defined in OS X 10.10 and later
44 #if defined(MAC_OS_X_VERSION_10_10)
45 #if USING_ARC
46 @implementation AppDelegate {
47     id <NSObject> activity;
49 void disableAppNap(const char* reason) {
50     if(activity == nil) {
51         //NSLog(@"disableAppNap: %@", @(reason));
52         activity = [[NSProcessInfo processInfo] beginActivityWithOptions:NSActivityBackground reason:@(reason)];
53     }
56 void enableAppNap() {
57     if(activity != nil) {
58         //NSLog(@"enableAppNap");
59         [[NSProcessInfo processInfo] endActivity:activity];
60         activity = nil;
61     }
63 @end
64 #else
65 void disableAppNap(const char* reason) {
66     if(activity == nil) {
67         //NSLog(@"disableAppNap: %@", @(reason));
68         activity = [[NSProcessInfo processInfo] beginActivityWithOptions:NSActivityBackground reason:@(reason)];
69         [activity retain];
70     }
73 void enableAppNap() {
74     if(activity != nil) {
75         //NSLog(@"enableAppNap");
76         [[NSProcessInfo processInfo] endActivity:activity];
77         [activity release];
78         activity = nil;
79     }
81 #endif
83 #else
84 void disableAppNap(const char* reason) { }
85 void enableAppNap() { }
86 #endif
89 #if TARGET_OS_IOS
90 void makeUnfocusable() { }
91 void makeFocusable() { }
92 //OS X Version 10.6 is defined in OS X 10.6 and later
93 #elif defined(MAC_OS_X_VERSION_10_6)
94 void makeUnfocusable() {
95     [NSApp setActivationPolicy:NSApplicationActivationPolicyProhibited];
97 void makeFocusable() {
98     [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
100 #else
101 void makeUnfocusable() { }
102 void makeFocusable() { }
103 #endif