| OLD | NEW | 
|---|
| 1 | 1 | 
| 2 /* | 2 /* | 
| 3  * Copyright 2006 The Android Open Source Project | 3  * Copyright 2006 The Android Open Source Project | 
| 4  * | 4  * | 
| 5  * Use of this source code is governed by a BSD-style license that can be | 5  * Use of this source code is governed by a BSD-style license that can be | 
| 6  * found in the LICENSE file. | 6  * found in the LICENSE file. | 
| 7  */ | 7  */ | 
| 8 | 8 | 
| 9 | 9 | 
| 10 #include "SkGlyphCache.h" | 10 #include "SkGlyphCache.h" | 
| (...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 587     /* Release the mutex now, before we create a new entry (which might have | 587     /* Release the mutex now, before we create a new entry (which might have | 
| 588         side-effects like trying to access the cache/mutex (yikes!) | 588         side-effects like trying to access the cache/mutex (yikes!) | 
| 589     */ | 589     */ | 
| 590     ac.release();           // release the mutex now | 590     ac.release();           // release the mutex now | 
| 591     insideMutex = false;    // can't use globals anymore | 591     insideMutex = false;    // can't use globals anymore | 
| 592 | 592 | 
| 593     // Check if we can create a scaler-context before creating the glyphcache. | 593     // Check if we can create a scaler-context before creating the glyphcache. | 
| 594     // If not, we may have exhausted OS/font resources, so try purging the | 594     // If not, we may have exhausted OS/font resources, so try purging the | 
| 595     // cache once and try again. | 595     // cache once and try again. | 
| 596     { | 596     { | 
| 597         SkScalerContext* ctx = typeface->createScalerContext(desc); | 597         // pass true the first time, to notice if the scalercontext failed, | 
|  | 598         // so we can try the purge. | 
|  | 599         SkScalerContext* ctx = typeface->createScalerContext(desc, true); | 
| 598         if (!ctx) { | 600         if (!ctx) { | 
| 599             getSharedGlobals().purgeAll(); | 601             getSharedGlobals().purgeAll(); | 
| 600             ctx = typeface->createScalerContext(desc); | 602             ctx = typeface->createScalerContext(desc, false); | 
| 601             if (!ctx) { | 603             SkASSERT(ctx); | 
| 602                 sk_throw(); |  | 
| 603             } |  | 
| 604         } | 604         } | 
| 605         cache = SkNEW_ARGS(SkGlyphCache, (typeface, desc, ctx)); | 605         cache = SkNEW_ARGS(SkGlyphCache, (typeface, desc, ctx)); | 
| 606     } | 606     } | 
| 607 | 607 | 
| 608 FOUND_IT: | 608 FOUND_IT: | 
| 609 | 609 | 
| 610     AutoValidate av(cache); | 610     AutoValidate av(cache); | 
| 611 | 611 | 
| 612     if (proc(cache, context)) {   // stay detached | 612     if (proc(cache, context)) {   // stay detached | 
| 613         if (insideMutex) { | 613         if (insideMutex) { | 
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 779     return tls ? tls->getFontCacheLimit() : 0; | 779     return tls ? tls->getFontCacheLimit() : 0; | 
| 780 } | 780 } | 
| 781 | 781 | 
| 782 void SkGraphics::SetTLSFontCacheLimit(size_t bytes) { | 782 void SkGraphics::SetTLSFontCacheLimit(size_t bytes) { | 
| 783     if (0 == bytes) { | 783     if (0 == bytes) { | 
| 784         SkGlyphCache_Globals::DeleteTLS(); | 784         SkGlyphCache_Globals::DeleteTLS(); | 
| 785     } else { | 785     } else { | 
| 786         SkGlyphCache_Globals::GetTLS().setFontCacheLimit(bytes); | 786         SkGlyphCache_Globals::GetTLS().setFontCacheLimit(bytes); | 
| 787     } | 787     } | 
| 788 } | 788 } | 
| OLD | NEW | 
|---|