From 02f21c73082efec21b063d395196329f16f9ec73 Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Tue, 22 Mar 2011 18:50:50 -0700 Subject: Backup reachability events. --- MobileCydia.mm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'MobileCydia.mm') diff --git a/MobileCydia.mm b/MobileCydia.mm index 1fd292d..e2c4b25 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -6557,19 +6557,41 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { /* Home Controller {{{ */ @interface HomeController : CydiaWebViewController { + CFRunLoopRef runloop_; + SCNetworkReachabilityRef reachability_; } @end @implementation HomeController +static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachability, SCNetworkReachabilityFlags flags, void *info) { + [(HomeController *) info dispatchEvent:@"CydiaReachabilityCallback"]; +} + - (id) init { if ((self = [super init]) != nil) { [self setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/#!/home/", UI_]]]; [self reloadData]; + + reachability_ = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, "cydia.saurik.com"); + if (reachability_ != NULL) { + SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL}; + SCNetworkReachabilitySetCallback(reachability_, HomeControllerReachabilityCallback, &context); + + CFRunLoopRef runloop(CFRunLoopGetCurrent()); + if (SCNetworkReachabilityScheduleWithRunLoop(reachability_, runloop, kCFRunLoopDefaultMode)) + runloop_ = runloop; + } } return self; } +- (void) dealloc { + if (reachability_ != NULL && runloop_ != NULL) + SCNetworkReachabilityUnscheduleFromRunLoop(reachability_, runloop_, kCFRunLoopDefaultMode); + [super dealloc]; +} + - (NSURL *) navigationURL { return [NSURL URLWithString:@"cydia://home"]; } -- cgit v1.2.3