diff options
author | Sam Bingner <sam@bingner.com> | 2020-12-01 15:06:50 -1000 |
---|---|---|
committer | Sam Bingner <sam@bingner.com> | 2020-12-02 09:43:22 -1000 |
commit | eac76deb1b8bdc59332a474ad468f3825113ac80 (patch) | |
tree | 1df8a3d71e22e16599537a2b66c5e15c91925d65 /sbreload.m | |
parent | f4a62caae823f84f0b55a9a57de94f174584f00e (diff) |
Make sbreload work on tvosv1.1.19
Diffstat (limited to 'sbreload.m')
-rw-r--r-- | sbreload.m | 21 |
1 files changed, 21 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"); |