| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "content/common/font_cache_dispatcher_win.h" | 5 #include "content/common/font_cache_dispatcher_win.h" | 
| 6 | 6 | 
| 7 #include <map> | 7 #include <map> | 
| 8 #include <vector> | 8 #include <vector> | 
| 9 | 9 | 
| 10 #include "base/logging.h" | 10 #include "base/logging.h" | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
| 21  public: | 21  public: | 
| 22   static FontCache* GetInstance() { | 22   static FontCache* GetInstance() { | 
| 23     return Singleton<FontCache>::get(); | 23     return Singleton<FontCache>::get(); | 
| 24   } | 24   } | 
| 25 | 25 | 
| 26   void PreCacheFont(const LOGFONT& font, FontCacheDispatcher* dispatcher) { | 26   void PreCacheFont(const LOGFONT& font, FontCacheDispatcher* dispatcher) { | 
| 27     // TODO(ananta): Remove ScopedTracker below once crbug.com/90127 is fixed. | 27     // TODO(ananta): Remove ScopedTracker below once crbug.com/90127 is fixed. | 
| 28     tracked_objects::ScopedTracker tracking_profile( | 28     tracked_objects::ScopedTracker tracking_profile( | 
| 29         FROM_HERE_WITH_EXPLICIT_FUNCTION("90127 FontCache::PreCacheFont")); | 29         FROM_HERE_WITH_EXPLICIT_FUNCTION("90127 FontCache::PreCacheFont")); | 
| 30 | 30 | 
| 31     typedef std::map<base::string16, FontCache::CacheElement> FontNameToElement; |  | 
| 32 |  | 
| 33     base::AutoLock lock(mutex_); | 31     base::AutoLock lock(mutex_); | 
| 34 | 32 | 
| 35     // Fetch the font into memory. | 33     // Fetch the font into memory. | 
| 36     // No matter the font is cached or not, we load it to avoid GDI swapping out | 34     // No matter the font is cached or not, we load it to avoid GDI swapping out | 
| 37     // that font file. | 35     // that font file. | 
| 38     HDC hdc = GetDC(NULL); | 36     HDC hdc = GetDC(NULL); | 
| 39     HFONT font_handle = CreateFontIndirect(&font); | 37     HFONT font_handle = CreateFontIndirect(&font); | 
| 40     DCHECK(NULL != font_handle); | 38     DCHECK(NULL != font_handle); | 
| 41 | 39 | 
| 42     HGDIOBJ old_font = SelectObject(hdc, font_handle); | 40     HGDIOBJ old_font = SelectObject(hdc, font_handle); | 
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 190   FontCache::GetInstance()->PreCacheFont(font, this); | 188   FontCache::GetInstance()->PreCacheFont(font, this); | 
| 191 } | 189 } | 
| 192 | 190 | 
| 193 void FontCacheDispatcher::OnReleaseCachedFonts() { | 191 void FontCacheDispatcher::OnReleaseCachedFonts() { | 
| 194   // Release cached fonts that requested from a pid by decrementing the ref | 192   // Release cached fonts that requested from a pid by decrementing the ref | 
| 195   // count.  When ref count is zero, the handles are released. | 193   // count.  When ref count is zero, the handles are released. | 
| 196   FontCache::GetInstance()->ReleaseCachedFonts(this); | 194   FontCache::GetInstance()->ReleaseCachedFonts(this); | 
| 197 } | 195 } | 
| 198 | 196 | 
| 199 }  // namespace content | 197 }  // namespace content | 
| OLD | NEW | 
|---|