diff options
-rw-r--r-- | sbreload.m | 21 | ||||
-rw-r--r-- | sbreload.xml | 4 |
2 files changed, 25 insertions, 0 deletions
@@ -71,6 +71,12 @@ -(void)sendActions:(NSSet*)actions withResult:(id)result; @end +@interface PBSSystemService ++(id)sharedInstance; +-(void)relaunch; +-(void)relaunchBackboardd; +@end + typedef enum { None = 0, RestartRenderServer = (1 << 0), // also relaunch backboardd @@ -260,6 +266,21 @@ int main(int argc, const char *argv[]) { _assert(argc == 1, "usage: sbreload"); if (kCFCoreFoundationVersionNumber >= 1443.00) { + dlopen("/System/Library/PrivateFrameworks/PineBoardServices.framework/PineBoardServices", RTLD_LAZY); + Class $PBSSystemService = objc_getClass("PBSSystemService"); + if ($PBSSystemService) { + pid_t pb_pid = launch_get_job_pid("com.apple.PineBoard"); + if ($PBSSystemService) { + [[$PBSSystemService sharedInstance] relaunchBackboardd]; + for (int i=0; i<100; i++) { + if (kill(pb_pid, 0)) { + return 0; + } + usleep(1000); + } + } + return -1; + } dlopen("/System/Library/PrivateFrameworks/FrontBoardServices.framework/FrontBoardServices", RTLD_LAZY); dlopen("/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices", RTLD_LAZY); Class $SBSRelaunchAction = objc_getClass("SBSRelaunchAction"); diff --git a/sbreload.xml b/sbreload.xml index 3be0384..9f4985a 100644 --- a/sbreload.xml +++ b/sbreload.xml @@ -5,6 +5,10 @@ <true/> <key>com.apple.frontboard.shutdown</key> <true/> + <key>com.apple.appletv.pbs.allow-relaunch-backboardd</key> + <true/> + <key>com.apple.appletv.pbs.allow-relaunch</key> + <true/> <key>platform-application</key> <true/> <key>com.apple.private.skip-library-validation</key> |