From 87e3db53911d202e2f36ac7402e56c794a092e4d Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 27 Jan 2012 15:21:51 +0000 Subject: [PATCH] See ChangeLog Monotone-Parent: ee188ecf014aadf3749779aa50df66d72a126c71 Monotone-Revision: 15c306f9d11152fee321b11e184bc75e9e2be6f8 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2012-01-27T15:21:51 --- ChangeLog | 10 ++++++++++ .../Appointments/SOGoAppointmentFolder.m | 5 +++++ .../SOGoAppointmentFolderObject.m | 19 +++++++++++++++++-- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 86d942303..6ff47bf57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2012-01-27 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (bareFetchFields: ...) - we now cache the returned + results - just like for fetchFields:... + + * SoObjects/Appointments/SOGoAppointmentFolderObject.m + (_folderCalenars) - we now ask for the c_content and use + a local autorelease pool to avoid consuming too much memory + 2012-01-26 Ludovic Marcotte * SoObjects/SOGo/LDAPSource.{h,m} - now honor diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index b9a3f8700..882f5cac9 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -558,6 +558,11 @@ static NSNumber *sharedYes = nil; } else records = [NSArray array]; + + if ([self _checkIfWeCanRememberRecords: fields]) + { + [self _rememberRecords: records]; + } return records; } diff --git a/SoObjects/Appointments/SOGoAppointmentFolderObject.m b/SoObjects/Appointments/SOGoAppointmentFolderObject.m index 112c26ea6..8cde6867e 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolderObject.m +++ b/SoObjects/Appointments/SOGoAppointmentFolderObject.m @@ -1,6 +1,6 @@ /* SOGoAppointmentFolderObject.m - this file is part of SOGo * - * Copyright (C) 2010 Inverse inc. + * Copyright (C) 2010-2012 Inverse inc. * * Author: Wolfgang Sourdeau * @@ -21,6 +21,7 @@ */ #import +#import #import #import #import @@ -50,7 +51,7 @@ static NSArray *contentFields = nil; if (!contentFields) contentFields = [[NSArray alloc] initWithObjects: @"c_name", @"c_version", @"c_lastmodified", @"c_creationdate", - @"c_component", nil]; + @"c_component", @"c_content", nil]; } - (id) init @@ -181,6 +182,7 @@ static NSArray *contentFields = nil; NSArray *records; NSMutableArray *calendars; SOGoCalendarComponent *component; + NSAutoreleasePool *pool; int count, max; iCalCalendar *calendar; NSString *name; @@ -188,8 +190,19 @@ static NSArray *contentFields = nil; records = [self _fetchFolderRecords]; max = [records count]; calendars = [NSMutableArray arrayWithCapacity: max]; + pool = nil; + + // This can consume a significant amount of memory so + // we use a local autorelease pool to avoid running + // out of memory. for (count = 0; count < max; count++) { + if (count % 100 == 0) + { + RELEASE(pool); + pool = [[NSAutoreleasePool alloc] init]; + } + name = [[records objectAtIndex: count] objectForKey: @"c_name"]; component = [folder lookupName: name inContext: context @@ -202,6 +215,8 @@ static NSArray *contentFields = nil; @" be listed here", name]; } + RELEASE(pool); + return calendars; }