Show
Ignore:
Timestamp:
04/19/09 17:42:09 (3 years ago)
Author:
gbooker
Message:

Use a separate thread for rescanning a directory and send changes back to main thread. Tricky, but it works.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/CoreData/SapphireFrappliance/MetaData/Support/SapphireMetaDataSupport.m

    r801 r820  
    4949- (NSDictionary *)changedValuesWithObjectIDs 
    5050{ 
    51         NSMutableDictionary *ret = [[NSMutableDictionary alloc] initWithDictionary:[self changedValues]]; 
     51        NSDictionary *changedValues = [self changedValues]; 
     52        NSMutableDictionary *ret = [[NSMutableDictionary alloc] initWithDictionary:changedValues]; 
    5253        NSString *key; 
    53         NSEnumerator *keyEnum = [ret keyEnumerator]; 
     54        NSEnumerator *keyEnum = [changedValues keyEnumerator]; 
    5455        while((key = [keyEnum nextObject]) != nil) 
    5556        { 
     
    187188- (void) dealloc 
    188189{ 
     190        [mainMoc release]; 
    189191        [writeTimer invalidate]; 
    190192        writeTimer = nil; 
     
    328330- (BOOL)save:(NSManagedObjectContext *)context; 
    329331{ 
     332        if(context != mainMoc) 
     333        { 
     334                return YES; 
     335        } 
    330336        if(writeTimer == nil) 
    331337        { 
     
    344350         
    345351        return [[SapphireMetaDataSupport sharedInstance] save:context]; 
     352} 
     353 
     354- (void)applyChanges:(NSDictionary *)changes 
     355{ 
     356        [SapphireMetaDataSupport applyChanges:changes toContext:mainMoc]; 
     357} 
     358 
     359- (void)applyChangesFromContext:(NSManagedObjectContext *)context 
     360{ 
     361        if(mainMoc != nil) 
     362        { 
     363                NSDictionary *changes = [SapphireMetaDataSupport changesDictionaryForContext:context]; 
     364                [self performSelectorOnMainThread:@selector(applyChanges:) withObject:changes waitUntilDone:YES]; 
     365        } 
     366} 
     367 
     368+ (void)applyChangesFromContext:(NSManagedObjectContext *)context 
     369{ 
     370        [[SapphireMetaDataSupport sharedInstance] applyChangesFromContext:context]; 
     371} 
     372 
     373- (void)setMainContext:(NSManagedObjectContext *)moc 
     374{ 
     375        [mainMoc release]; 
     376        mainMoc = [moc retain]; 
     377} 
     378 
     379+ (void)setMainContext:(NSManagedObjectContext *)moc 
     380{ 
     381        [[SapphireMetaDataSupport sharedInstance] setMainContext:moc]; 
    346382} 
    347383