summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Bingner <sam@bingner.com>2020-12-01 15:06:50 -1000
committerSam Bingner <sam@bingner.com>2020-12-02 09:43:22 -1000
commiteac76deb1b8bdc59332a474ad468f3825113ac80 (patch)
tree1df8a3d71e22e16599537a2b66c5e15c91925d65
parentf4a62caae823f84f0b55a9a57de94f174584f00e (diff)
Make sbreload work on tvosv1.1.19
-rw-r--r--sbreload.m21
-rw-r--r--sbreload.xml4
2 files changed, 25 insertions, 0 deletions
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 @@
<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>