@@ -21,11 +21,13 @@ #include #import "OFTimer.h" #import "OFDate.h" #import "OFRunLoop.h" -#import "OFCondition.h" +#ifdef OF_THREADS +# import "OFCondition.h" +#endif #import "OFInvalidArgumentException.h" #import "autorelease.h" #import "macros.h" @@ -233,11 +235,13 @@ object1 = [object1_ retain]; object2 = [object2_ retain]; arguments = arguments_; repeats = repeats_; isValid = YES; +#ifdef OF_THREADS condition = [[OFCondition alloc] init]; +#endif } @catch (id e) { [self release]; @throw e; } @@ -307,11 +311,13 @@ fireDate = [fireDate_ retain]; interval = interval_; repeats = repeats_; block = [block_ copy]; isValid = YES; +# ifdef OF_THREADS condition = [[OFCondition alloc] init]; +# endif } @catch (id e) { [self release]; @throw e; } @@ -332,11 +338,13 @@ [object1 release]; [object2 release]; #ifdef OF_HAVE_BLOCKS [block release]; #endif +#ifdef OF_THREADS [condition release]; +#endif [super dealloc]; } - (of_comparison_result_t)compare: (id )object_ @@ -378,17 +386,19 @@ } #ifdef OF_HAVE_BLOCKS } #endif +#ifdef OF_THREADS [condition lock]; @try { done = YES; [condition signal]; } @finally { [condition unlock]; } +#endif if (repeats && isValid) { OFDate *old = fireDate; fireDate = [[OFDate alloc] initWithTimeIntervalSinceNow: interval]; @@ -436,10 +446,11 @@ - (BOOL)isValid { return isValid; } +#ifdef OF_THREADS - (void)waitUntilDone { [condition lock]; @try { if (done) { @@ -450,11 +461,12 @@ [condition wait]; } @finally { [condition unlock]; } } +#endif - (void)OF_setInRunLoop: (OFRunLoop*)inRunLoop_ { OF_SETTER(inRunLoop, inRunLoop_, YES, 0) } @end