diff options
author | rowanbeentje <rowan@beent.je> | 2012-03-17 17:56:04 +0000 |
---|---|---|
committer | rowanbeentje <rowan@beent.je> | 2012-03-17 17:56:04 +0000 |
commit | e26e22d9d6a6641cfc0a35e8ae31c12aee8bea5b (patch) | |
tree | bb9bcc0ff8ba2e685fcb0fac775b616d9fde2baf /Source/NSNotificationCenterThreadingAdditions.m | |
parent | ac8ebfe4bba6d7da6edad87c75b174156d919621 (diff) | |
download | sequelpro-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.m | 52 |
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 |