Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
qt
macos_appnap.mm
Go to the documentation of this file.
1
// Copyright (c) 2011-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include "
macos_appnap.h
"
6
7
#include <AvailabilityMacros.h>
8
#include <Foundation/NSProcessInfo.h>
9
#include <Foundation/Foundation.h>
10
11
class
CAppNapInhibitor::CAppNapImpl
12
{
13
public
:
14
~CAppNapImpl
()
15
{
16
if
(
activityId
)
17
enableAppNap
();
18
}
19
20
void
disableAppNap
()
21
{
22
if
(!
activityId
)
23
{
24
@autoreleasepool {
25
const
NSActivityOptions activityOptions =
26
NSActivityUserInitiatedAllowingIdleSystemSleep &
27
~(NSActivitySuddenTerminationDisabled |
28
NSActivityAutomaticTerminationDisabled);
29
30
id
processInfo = [NSProcessInfo processInfo];
31
if
([processInfo respondsToSelector:
@selector
(beginActivityWithOptions:reason:)])
32
{
33
activityId
= [processInfo beginActivityWithOptions: activityOptions reason:
@"Temporarily disable App Nap for bitcoin-qt."
];
34
[
activityId
retain];
35
}
36
}
37
}
38
}
39
40
void
enableAppNap
()
41
{
42
if
(
activityId
)
43
{
44
@autoreleasepool {
45
id
processInfo = [NSProcessInfo processInfo];
46
if
([processInfo respondsToSelector:
@selector
(endActivity:)])
47
[processInfo endActivity:
activityId
];
48
49
[
activityId
release];
50
activityId
= nil;
51
}
52
}
53
}
54
55
private
:
56
NSObject*
activityId
;
57
};
58
59
CAppNapInhibitor::CAppNapInhibitor
() :
impl
(new
CAppNapImpl
()) {}
60
61
CAppNapInhibitor::~CAppNapInhibitor
() =
default
;
62
63
void
CAppNapInhibitor::disableAppNap
()
64
{
65
impl
->disableAppNap();
66
}
67
68
void
CAppNapInhibitor::enableAppNap
()
69
{
70
impl
->enableAppNap();
71
}
CAppNapInhibitor::CAppNapImpl
Definition
macos_appnap.mm:12
CAppNapInhibitor::CAppNapImpl::disableAppNap
void disableAppNap()
Definition
macos_appnap.mm:20
CAppNapInhibitor::CAppNapImpl::enableAppNap
void enableAppNap()
Definition
macos_appnap.mm:40
CAppNapInhibitor::CAppNapImpl::activityId
NSObject * activityId
Definition
macos_appnap.mm:56
CAppNapInhibitor::CAppNapImpl::~CAppNapImpl
~CAppNapImpl()
Definition
macos_appnap.mm:14
CAppNapInhibitor::disableAppNap
void disableAppNap()
Definition
macos_appnap.mm:63
CAppNapInhibitor::CAppNapInhibitor
CAppNapInhibitor()
Definition
macos_appnap.mm:59
CAppNapInhibitor::enableAppNap
void enableAppNap()
Definition
macos_appnap.mm:68
CAppNapInhibitor::impl
std::unique_ptr< CAppNapImpl > impl
Definition
macos_appnap.h:21
CAppNapInhibitor::~CAppNapInhibitor
~CAppNapInhibitor()
macos_appnap.h
Generated on
for Bitcoin Core by
1.17.0