aboutsummaryrefslogtreecommitdiffstats
path: root/Source/NSNotificationCenterThreadingAdditions.m
diff options
context:
space:
mode:
authorstuconnolly <stuart02@gmail.com>2012-03-18 20:05:36 +0000
committerstuconnolly <stuart02@gmail.com>2012-03-18 20:05:36 +0000
commit524e8c356b4074f5be5933b0551374a130a8f6d1 (patch)
tree0dab40735f2d9484930050cd08376cbf15e4ea55 /Source/NSNotificationCenterThreadingAdditions.m
parentbe3263f8158cb6f3dfa1005f49beefa7e494b852 (diff)
downloadsequelpro-524e8c356b4074f5be5933b0551374a130a8f6d1.tar.gz
sequelpro-524e8c356b4074f5be5933b0551374a130a8f6d1.tar.bz2
sequelpro-524e8c356b4074f5be5933b0551374a130a8f6d1.zip
Bring outline view branch up to date with trunk (r3471:r3517).
Diffstat (limited to 'Source/NSNotificationCenterThreadingAdditions.m')
-rw-r--r--Source/NSNotificationCenterThreadingAdditions.m52
1 files changed, 52 insertions, 0 deletions
diff --git a/Source/NSNotificationCenterThreadingAdditions.m b/Source/NSNotificationCenterThreadingAdditions.m
new file mode 100644
index 00000000..395275e4
--- /dev/null
+++ b/Source/NSNotificationCenterThreadingAdditions.m
@@ -0,0 +1,52 @@
+//
+// $Id$
+//
+// NSNotificationCenterThreadingAdditions.m
+// Enable NSNotification being sent from threads
+//
+// Copied from the TCMPortMapper project; original code available on
+// Google Code at <http://code.google.com/p/tcmportmapper/source/browse/TCMPortMapper/framework/NSNotificationCenterThreadingAdditions.m>
+//
+// Copyright (c) 2007-2008 TheCodingMonkeys:
+// Martin Pittenauer, Dominik Wagner, <http://codingmonkeys.de>
+// Some rights reserved: <http://opensource.org/licenses/mit-license.php>
+//
+
+#import "NSNotificationCenterThreadingAdditions.h"
+#import <pthread.h>
+
+@implementation NSNotificationCenter (NSNotificationCenterThreadingAdditions)
+
++ (void)_postNotification:(NSNotification *)aNotification {
+ [[self defaultCenter] postNotification:aNotification];
+}
+
++ (void)_postNotificationViaDictionary:(NSDictionary *)anInfoDictionary {
+ NSString *name = [anInfoDictionary objectForKey:@"name"];
+ id object = [anInfoDictionary objectForKey:@"object"];
+ [[self defaultCenter] postNotificationName:name
+ object:object
+ userInfo:nil];
+ [anInfoDictionary release];
+}
+
+
+- (void)postNotificationOnMainThread:(NSNotification *)aNotification {
+ if( pthread_main_np() ) return [self postNotification:aNotification];
+ [[self class] performSelectorOnMainThread:@selector( _postNotification: ) withObject:aNotification waitUntilDone:NO];
+}
+
+- (void) postNotificationOnMainThreadWithName:(NSString *)aName object:(id)anObject {
+ if( pthread_main_np() ) return [self postNotificationName:aName object:anObject userInfo:nil];
+ NSMutableDictionary *info = [[NSMutableDictionary allocWithZone:nil] initWithCapacity:2];
+ if (aName) {
+ [info setObject:aName forKey:@"name"];
+ }
+ if (anObject) {
+ [info setObject:anObject forKey:@"object"];
+ }
+ [[self class] performSelectorOnMainThread:@selector(_postNotificationViaDictionary:)
+ withObject:info
+ waitUntilDone:NO];
+}
+@end