summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2012-01-20 00:25:11 -0800
committerJay Freeman (saurik) <saurik@saurik.com>2012-01-20 00:26:30 -0800
commit8a3b565c801c637fba68ccdd2f1b59a49b741223 (patch)
tree4ec38b7de11746d2b03aa1d5bd5c45bc9cbb6b8f
parent2ef6faadc0910c127a209d38c53e04c401899ee6 (diff)
Use SBSSetInterceptsMenuButtonForever() to lock menu button.
-rw-r--r--MobileCydia.mm14
1 files changed, 12 insertions, 2 deletions
diff --git a/MobileCydia.mm b/MobileCydia.mm
index f789b46..826b316 100644
--- a/MobileCydia.mm
+++ b/MobileCydia.mm
@@ -262,6 +262,8 @@ static NSString *Warning_;
static bool AprilFools_;
+static void (*$SBSSetInterceptsMenuButtonForever)(bool);
+
static bool IsReachable(const char *name) {
SCNetworkReachabilityFlags flags; {
SCNetworkReachabilityRef reachability(SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, name));
@@ -9341,11 +9343,17 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi
@implementation Cydia
- (void) lockSuspend {
- ++locked_;
+ if (locked_++ == 0) {
+ if ($SBSSetInterceptsMenuButtonForever != NULL)
+ (*$SBSSetInterceptsMenuButtonForever)(true);
+ }
}
- (void) unlockSuspend {
- --locked_;
+ if (--locked_ == 0) {
+ if ($SBSSetInterceptsMenuButtonForever != NULL)
+ (*$SBSSetInterceptsMenuButtonForever)(false);
+ }
}
- (void) beginUpdate {
@@ -10829,6 +10837,8 @@ int main(int argc, char *argv[]) {
//UIKeyboardDisableAutomaticAppearance();
/* }}} */
+ $SBSSetInterceptsMenuButtonForever = reinterpret_cast<void (*)(bool)>(dlsym(RTLD_DEFAULT, "SBSSetInterceptsMenuButtonForever"));
+
BOOL (*GSSystemHasCapability)(CFStringRef) = reinterpret_cast<BOOL (*)(CFStringRef)>(dlsym(RTLD_DEFAULT, "GSSystemHasCapability"));
bool fast = GSSystemHasCapability != NULL && GSSystemHasCapability(CFSTR("armv7"));