175 iter.remove(); 176 } 177 } 178 } 179 180 // Kill any pending flush 181 if (flushTimerTask != null) { 182 flushTimerTask.cancel(); 183 flushTimerTask = null; 184 } 185 186 // Clear changed file list. The changed files were guaranteed to 187 // have been in the cached file list (because there was a strong 188 // reference from changedFiles. 189 if (changedFiles != null) changedFiles.clear(); 190 191 return ok; 192 } 193 194 195 // Write all prefs changes to disk, but do not clear all cached prefs 196 // values. Also kills any scheduled flush task. 197 // There's no CFPreferencesFlush() (<rdar://problem/3049129>), so lots of cached prefs 198 // are cleared anyway. 199 static synchronized boolean flushWorld() 200 { 201 boolean ok = true; 202 203 if (changedFiles != null && !changedFiles.isEmpty()) { 204 Iterator iter = changedFiles.iterator(); 205 while (iter.hasNext()) { 206 MacOSXPreferencesFile f = (MacOSXPreferencesFile)iter.next(); 207 if (!f.synchronize()) ok = false; 208 } 209 210 changedFiles.clear(); 211 } 212 213 if (flushTimerTask != null) { 214 flushTimerTask.cancel(); | 175 iter.remove(); 176 } 177 } 178 } 179 180 // Kill any pending flush 181 if (flushTimerTask != null) { 182 flushTimerTask.cancel(); 183 flushTimerTask = null; 184 } 185 186 // Clear changed file list. The changed files were guaranteed to 187 // have been in the cached file list (because there was a strong 188 // reference from changedFiles. 189 if (changedFiles != null) changedFiles.clear(); 190 191 return ok; 192 } 193 194 195 // Sync only current user preferences 196 static synchronized boolean syncUser() { 197 boolean ok = true; 198 if (cachedFiles != null && !cachedFiles.isEmpty()) { 199 Iterator<WeakReference> iter = cachedFiles.values().iterator(); 200 while (iter.hasNext()) { 201 WeakReference ref = iter.next(); 202 MacOSXPreferencesFile f = (MacOSXPreferencesFile)ref.get(); 203 if (f != null && f.user == cfCurrentUser) { 204 if (!f.synchronize()) { 205 ok = false; 206 } 207 } else { 208 iter.remove(); 209 } 210 } 211 } 212 // Renove synchronized file from changed file list. The changed files were 213 // guaranteed to have been in the cached file list (because there was a strong 214 // reference from changedFiles. 215 if (changedFiles != null) { 216 Iterator<MacOSXPreferencesFile> iterChanged = changedFiles.iterator(); 217 while (iterChanged.hasNext()) { 218 MacOSXPreferencesFile f = iterChanged.next(); 219 if (f != null && f.user == cfCurrentUser) 220 iterChanged.remove(); 221 } 222 } 223 return ok; 224 } 225 226 227 228 229 // Write all prefs changes to disk, but do not clear all cached prefs 230 // values. Also kills any scheduled flush task. 231 // There's no CFPreferencesFlush() (<rdar://problem/3049129>), so lots of cached prefs 232 // are cleared anyway. 233 static synchronized boolean flushWorld() 234 { 235 boolean ok = true; 236 237 if (changedFiles != null && !changedFiles.isEmpty()) { 238 Iterator iter = changedFiles.iterator(); 239 while (iter.hasNext()) { 240 MacOSXPreferencesFile f = (MacOSXPreferencesFile)iter.next(); 241 if (!f.synchronize()) ok = false; 242 } 243 244 changedFiles.clear(); 245 } 246 247 if (flushTimerTask != null) { 248 flushTimerTask.cancel(); |