From 9f7bc647094f83ae63915d7d1d2984f78c812d8a Mon Sep 17 00:00:00 2001 From: "gtm.daemon" Date: Thu, 15 Nov 2012 01:00:14 +0000 Subject: [Author: aharper] Exclude on 10.4 and only set name when pthread_setname_np is available (10.6 and later). R=dmaclach,thomasvl APPROVED=dmaclach DELTA=19 (17 added, 0 deleted, 2 changed) --- Foundation/GTMNSThread+Blocks.h | 6 ++++++ Foundation/GTMNSThread+Blocks.m | 15 +++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'Foundation') diff --git a/Foundation/GTMNSThread+Blocks.h b/Foundation/GTMNSThread+Blocks.h index 4d92b31..7754439 100644 --- a/Foundation/GTMNSThread+Blocks.h +++ b/Foundation/GTMNSThread+Blocks.h @@ -37,6 +37,10 @@ #endif // NS_BLOCKS_AVAILABLE +// [NSObject performSelector:onThread:...] 10.5 and later, so this makes no +// sense on any earlier SDK. +#if GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) + // A simple thread that does nothing but handle performBlock and // performSelector calls. @interface GTMSimpleWorkerThread : NSThread { @@ -47,3 +51,5 @@ // Will stop the thread. - (void)stop; @end + +#endif // GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) diff --git a/Foundation/GTMNSThread+Blocks.m b/Foundation/GTMNSThread+Blocks.m index 7b5a0d1..cb5243d 100644 --- a/Foundation/GTMNSThread+Blocks.m +++ b/Foundation/GTMNSThread+Blocks.m @@ -18,7 +18,11 @@ #import "GTMNSThread+Blocks.h" -#include +#import +#import + +// Only available 10.6 and later. +typedef int (*pthread_setname_np_Ptr)(const char*); #if NS_BLOCKS_AVAILABLE @@ -52,12 +56,17 @@ #endif // NS_BLOCKS_AVAILABLE +#if GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) + @implementation GTMSimpleWorkerThread - (void)setThreadDebuggerName:(NSString *)name { // [NSThread setName:] doesn't actually set the name in such a way that the // debugger can see it. So we handle it here instead. - pthread_setname_np([name UTF8String]); + // pthread_setname_np only available 10.6 and later, look up dynamically. + pthread_setname_np_Ptr setName = dlsym(RTLD_DEFAULT, "pthread_setname_np"); + if (!setName) return; + setName([name UTF8String]); } - (void)main { @@ -90,3 +99,5 @@ } @end + +#endif // GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) -- cgit v1.2.3