mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-22 16:33:29 +00:00
KVO tweaks
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32443 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
e0a2640d15
commit
6afda2b67a
3 changed files with 24 additions and 13 deletions
|
@ -1,3 +1,8 @@
|
|||
2011-03-03 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Source/NSKeyValueObserving.m: Fix possible thread race condition.
|
||||
* Source/ObjectiveC2/runtime.c: Fix bogus warning messages.
|
||||
|
||||
2011-03-03 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Source/NSOperation.m: re-introduce per-queue thread pool.
|
||||
|
|
|
@ -77,19 +77,25 @@ static NSMapTable *dependentKeyTable;
|
|||
static Class baseClass;
|
||||
static id null;
|
||||
|
||||
static inline void setup()
|
||||
static inline void
|
||||
setup()
|
||||
{
|
||||
if (kvoLock == nil)
|
||||
if (nil == kvoLock)
|
||||
{
|
||||
kvoLock = [GSLazyRecursiveLock new];
|
||||
null = [[NSNull null] retain];
|
||||
classTable = NSCreateMapTable(NSNonOwnedPointerMapKeyCallBacks,
|
||||
NSNonOwnedPointerMapValueCallBacks, 128);
|
||||
infoTable = NSCreateMapTable(NSNonOwnedPointerMapKeyCallBacks,
|
||||
NSNonOwnedPointerMapValueCallBacks, 1024);
|
||||
dependentKeyTable = NSCreateMapTable(NSNonOwnedPointerMapKeyCallBacks,
|
||||
NSOwnedPointerMapValueCallBacks, 128);
|
||||
baseClass = NSClassFromString(@"GSKVOBase");
|
||||
[gnustep_global_lock lock];
|
||||
if (nil == kvoLock)
|
||||
{
|
||||
kvoLock = [GSLazyRecursiveLock new];
|
||||
null = [[NSNull null] retain];
|
||||
classTable = NSCreateMapTable(NSNonOwnedPointerMapKeyCallBacks,
|
||||
NSNonOwnedPointerMapValueCallBacks, 128);
|
||||
infoTable = NSCreateMapTable(NSNonOwnedPointerMapKeyCallBacks,
|
||||
NSNonOwnedPointerMapValueCallBacks, 1024);
|
||||
dependentKeyTable = NSCreateMapTable(NSNonOwnedPointerMapKeyCallBacks,
|
||||
NSOwnedPointerMapValueCallBacks, 128);
|
||||
baseClass = NSClassFromString(@"GSKVOBase");
|
||||
}
|
||||
[gnustep_global_lock unlock];
|
||||
}
|
||||
}
|
||||
/*
|
||||
|
@ -373,7 +379,6 @@ replacementForClass(Class c)
|
|||
GSKVOReplacement *r;
|
||||
|
||||
setup();
|
||||
|
||||
[kvoLock lock];
|
||||
r = (GSKVOReplacement*)NSMapGet(classTable, (void*)c);
|
||||
if (r == nil)
|
||||
|
|
|
@ -1057,11 +1057,12 @@ objc_registerClassPair(Class cls)
|
|||
{
|
||||
return; // Already registered
|
||||
}
|
||||
if (Nil == existing)
|
||||
else if (Nil != existing)
|
||||
{
|
||||
fprintf(stderr, "*** ERROR *** function objc_registerClassPair() called "
|
||||
"for class pair with name ('%s') of existing class.\n",
|
||||
class_getName(cls));
|
||||
return;
|
||||
}
|
||||
|
||||
// Initialize the dispatch table for the class and metaclass.
|
||||
|
|
Loading…
Reference in a new issue