From eac76deb1b8bdc59332a474ad468f3825113ac80 Mon Sep 17 00:00:00 2001 From: Sam Bingner Date: Tue, 1 Dec 2020 15:06:50 -1000 Subject: Make sbreload work on tvos --- sbreload.m | 21 +++++++++++++++++++++ sbreload.xml | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/sbreload.m b/sbreload.m index bc3ecde..9b20740 100644 --- a/sbreload.m +++ b/sbreload.m @@ -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 @@ com.apple.frontboard.shutdown + com.apple.appletv.pbs.allow-relaunch-backboardd + + com.apple.appletv.pbs.allow-relaunch + platform-application com.apple.private.skip-library-validation -- cgit v1.2.3