aboutsummaryrefslogtreecommitdiffstats
path: root/Source/NSNotificationCenterThreadingAdditions.m
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2012-03-17 17:56:04 +0000
committerrowanbeentje <rowan@beent.je>2012-03-17 17:56:04 +0000
commite26e22d9d6a6641cfc0a35e8ae31c12aee8bea5b (patch)
treebb9bcc0ff8ba2e685fcb0fac775b616d9fde2baf /Source/NSNotificationCenterThreadingAdditions.m
parentac8ebfe4bba6d7da6edad87c75b174156d919621 (diff)
downloadsequelpro-e26e22d9d6a6641cfc0a35e8ae31c12aee8bea5b.tar.gz
sequelpro-e26e22d9d6a6641cfc0a35e8ae31c12aee8bea5b.tar.bz2
sequelpro-e26e22d9d6a6641cfc0a35e8ae31c12aee8bea5b.zip
- Remove the GPL-licensed Colloquy-sourced NSNotificationAdditions category from the project, and replace with an MIT-licensed TCMPortMapper sources NSNotificationCenterThreadingAdditions category. This should fix method clashes in the SP_REFACTOR project, so remove behavioural/namespacing switches.
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