aboutsummaryrefslogtreecommitdiff
path: root/Foundation
diff options
context:
space:
mode:
authorGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2012-11-15 01:00:14 +0000
committerGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2012-11-15 01:00:14 +0000
commit9f7bc647094f83ae63915d7d1d2984f78c812d8a (patch)
tree167289efb0b0daaf4dbe7c30ee5747d1529a88fc /Foundation
parentf8a42f9773fee05642564c74f157497e41d02bde (diff)
[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)
Diffstat (limited to 'Foundation')
-rw-r--r--Foundation/GTMNSThread+Blocks.h6
-rw-r--r--Foundation/GTMNSThread+Blocks.m15
2 files changed, 19 insertions, 2 deletions
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 <pthread.h>
+#import <pthread.h>
+#import <dlfcn.h>
+
+// 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)