Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Side by Side Diff: Source/platform/fonts/FontCache.cpp

Issue 227083006: [Oilpan]: Moving the FontSelector/FontCacheClient, CSSSegmentedFontFace, and FontFaceCache to the o… (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/platform/fonts/FontCache.h ('k') | Source/platform/fonts/FontCacheClient.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 3 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 if (m_purgePreventCount) 236 if (m_purgePreventCount)
237 return; 237 return;
238 238
239 if (!gFontDataCache || !gFontDataCache->purge(PurgeSeverity)) 239 if (!gFontDataCache || !gFontDataCache->purge(PurgeSeverity))
240 return; 240 return;
241 241
242 purgePlatformFontDataCache(); 242 purgePlatformFontDataCache();
243 purgeFontVerticalDataCache(); 243 purgeFontVerticalDataCache();
244 } 244 }
245 245
246 static HashSet<FontCacheClient*>* gClients; 246 static bool invalidateFontCache = false;
247
248 WillBeHeapHashSet<RawPtrWillBeWeakMember<FontCacheClient> >& fontCacheClients()
249 {
250 #if ENABLE(OILPAN)
251 DEFINE_STATIC_LOCAL(Persistent<HeapHashSet<WeakMember<FontCacheClient> > >, clients, (new HeapHashSet<WeakMember<FontCacheClient> >()));
252 #else
253 DEFINE_STATIC_LOCAL(HashSet<RawPtr<FontCacheClient> >*, clients, (new HashSe t<RawPtr<FontCacheClient> >()));
254 #endif
255 invalidateFontCache = true;
256 return *clients;
257 }
247 258
248 void FontCache::addClient(FontCacheClient* client) 259 void FontCache::addClient(FontCacheClient* client)
249 { 260 {
250 if (!gClients) 261 ASSERT(!fontCacheClients().contains(client));
251 gClients = new HashSet<FontCacheClient*>; 262 fontCacheClients().add(client);
252
253 ASSERT(!gClients->contains(client));
254 gClients->add(client);
255 } 263 }
256 264
265 #if !ENABLE(OILPAN)
257 void FontCache::removeClient(FontCacheClient* client) 266 void FontCache::removeClient(FontCacheClient* client)
258 { 267 {
259 ASSERT(gClients); 268 ASSERT(fontCacheClients().contains(client));
260 ASSERT(gClients->contains(client)); 269 fontCacheClients().remove(client);
261
262 gClients->remove(client);
263 } 270 }
271 #endif
264 272
265 static unsigned short gGeneration = 0; 273 static unsigned short gGeneration = 0;
266 274
267 unsigned short FontCache::generation() 275 unsigned short FontCache::generation()
268 { 276 {
269 return gGeneration; 277 return gGeneration;
270 } 278 }
271 279
272 void FontCache::invalidate() 280 void FontCache::invalidate()
273 { 281 {
274 if (!gClients) { 282 if (!invalidateFontCache) {
275 ASSERT(!gFontPlatformDataCache); 283 ASSERT(!gFontPlatformDataCache);
276 return; 284 return;
277 } 285 }
278 286
279 if (gFontPlatformDataCache) { 287 if (gFontPlatformDataCache) {
280 delete gFontPlatformDataCache; 288 delete gFontPlatformDataCache;
281 gFontPlatformDataCache = new FontPlatformDataCache; 289 gFontPlatformDataCache = new FontPlatformDataCache;
282 } 290 }
283 291
284 gGeneration++; 292 gGeneration++;
285 293
286 Vector<RefPtr<FontCacheClient> > clients; 294 WillBeHeapVector<RefPtrWillBeMember<FontCacheClient> > clients;
287 size_t numClients = gClients->size(); 295 size_t numClients = fontCacheClients().size();
288 clients.reserveInitialCapacity(numClients); 296 clients.reserveInitialCapacity(numClients);
289 HashSet<FontCacheClient*>::iterator end = gClients->end(); 297 WillBeHeapHashSet<RawPtrWillBeWeakMember<FontCacheClient> >::iterator end = fontCacheClients().end();
290 for (HashSet<FontCacheClient*>::iterator it = gClients->begin(); it != end; ++it) 298 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<FontCacheClient> >::iterator i t = fontCacheClients().begin(); it != end; ++it)
291 clients.append(*it); 299 clients.append(*it);
292 300
293 ASSERT(numClients == clients.size()); 301 ASSERT(numClients == clients.size());
294 for (size_t i = 0; i < numClients; ++i) 302 for (size_t i = 0; i < numClients; ++i)
295 clients[i]->fontCacheInvalidated(); 303 clients[i]->fontCacheInvalidated();
296 304
297 purge(ForcePurge); 305 purge(ForcePurge);
298 } 306 }
299 307
300 } // namespace WebCore 308 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/platform/fonts/FontCache.h ('k') | Source/platform/fonts/FontCacheClient.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698