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

Side by Side Diff: chrome/common/resource_bundle.cc

Issue 20098: Linux: get us to the point where we crash at browser->window()->Show() (Closed)
Patch Set: Including tony's changes Created 11 years, 10 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
« no previous file with comments | « chrome/common/pref_service.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "chrome/common/resource_bundle.h" 5 #include "chrome/common/resource_bundle.h"
6 6
7 #include "base/gfx/png_decoder.h" 7 #include "base/gfx/png_decoder.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/string_piece.h" 9 #include "base/string_piece.h"
10 #include "chrome/common/gfx/chrome_font.h" 10 #include "chrome/common/gfx/chrome_font.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 std::vector<unsigned char>* bytes) { 78 std::vector<unsigned char>* bytes) {
79 return LoadResourceBytes(theme_data_, resource_id, bytes); 79 return LoadResourceBytes(theme_data_, resource_id, bytes);
80 } 80 }
81 81
82 bool ResourceBundle::LoadDataResourceBytes(int resource_id, 82 bool ResourceBundle::LoadDataResourceBytes(int resource_id,
83 std::vector<unsigned char>* bytes) { 83 std::vector<unsigned char>* bytes) {
84 return LoadResourceBytes(resources_data_, resource_id, bytes); 84 return LoadResourceBytes(resources_data_, resource_id, bytes);
85 } 85 }
86 86
87 SkBitmap* ResourceBundle::GetBitmapNamed(int resource_id) { 87 SkBitmap* ResourceBundle::GetBitmapNamed(int resource_id) {
88 #if defined(OS_WIN)
88 // Check to see if we already have the Skia image in the cache. 89 // Check to see if we already have the Skia image in the cache.
89 { 90 {
90 AutoLock lock_scope(lock_); 91 AutoLock lock_scope(lock_);
91 SkImageMap::const_iterator found = skia_images_.find(resource_id); 92 SkImageMap::const_iterator found = skia_images_.find(resource_id);
92 if (found != skia_images_.end()) 93 if (found != skia_images_.end())
93 return found->second; 94 return found->second;
94 } 95 }
95 96
96 scoped_ptr<SkBitmap> bitmap; 97 scoped_ptr<SkBitmap> bitmap;
97 98
98 if (theme_data_) 99 if (theme_data_)
99 bitmap.reset(LoadBitmap(theme_data_, resource_id)); 100 bitmap.reset(LoadBitmap(theme_data_, resource_id));
100 101
101 // If we did not find the bitmap in the theme DLL, try the current one. 102 // If we did not find the bitmap in the theme DLL, try the current one.
102 if (!bitmap.get()) 103 if (!bitmap.get())
103 bitmap.reset(LoadBitmap(resources_data_, resource_id)); 104 bitmap.reset(LoadBitmap(resources_data_, resource_id));
104 105
105 // We loaded successfully. Cache the Skia version of the bitmap. 106 // We loaded successfully. Cache the Skia version of the bitmap.
106 if (bitmap.get()) { 107 if (bitmap.get()) {
107 AutoLock lock_scope(lock_); 108 AutoLock lock_scope(lock_);
108 109
109 // Another thread raced us, and has already cached the skia image. 110 // Another thread raced us, and has already cached the skia image.
110 if (skia_images_.count(resource_id)) 111 if (skia_images_.count(resource_id))
111 return skia_images_[resource_id]; 112 return skia_images_[resource_id];
112 113
113 skia_images_[resource_id] = bitmap.get(); 114 skia_images_[resource_id] = bitmap.get();
114 return bitmap.release(); 115 return bitmap.release();
115 } 116 }
116 117
118 #else
119 NOTIMPLEMENTED() << "image resource loading disabled; need data files";
120 #endif
117 // We failed to retrieve the bitmap, show a debugging red square. 121 // We failed to retrieve the bitmap, show a debugging red square.
118 { 122 {
119 LOG(WARNING) << "Unable to load bitmap with id " << resource_id; 123 LOG(WARNING) << "Unable to load bitmap with id " << resource_id;
124 #if defined(OS_WIN)
120 NOTREACHED(); // Want to assert in debug mode. 125 NOTREACHED(); // Want to assert in debug mode.
126 #else
127 // TODO(port): remove this exception
128 #endif
121 129
122 AutoLock lock_scope(lock_); // Guard empty_bitmap initialization. 130 AutoLock lock_scope(lock_); // Guard empty_bitmap initialization.
123 131
124 static SkBitmap* empty_bitmap = NULL; 132 static SkBitmap* empty_bitmap = NULL;
125 if (!empty_bitmap) { 133 if (!empty_bitmap) {
126 // The placeholder bitmap is bright red so people notice the problem. 134 // The placeholder bitmap is bright red so people notice the problem.
127 // This bitmap will be leaked, but this code should never be hit. 135 // This bitmap will be leaked, but this code should never be hit.
128 empty_bitmap = new SkBitmap(); 136 empty_bitmap = new SkBitmap();
129 empty_bitmap->setConfig(SkBitmap::kARGB_8888_Config, 32, 32); 137 empty_bitmap->setConfig(SkBitmap::kARGB_8888_Config, 32, 32);
130 empty_bitmap->allocPixels(); 138 empty_bitmap->allocPixels();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 case MediumBoldFont: 176 case MediumBoldFont:
169 return *medium_bold_font_; 177 return *medium_bold_font_;
170 case LargeFont: 178 case LargeFont:
171 return *large_font_; 179 return *large_font_;
172 case WebFont: 180 case WebFont:
173 return *web_font_; 181 return *web_font_;
174 default: 182 default:
175 return *base_font_; 183 return *base_font_;
176 } 184 }
177 } 185 }
OLDNEW
« no previous file with comments | « chrome/common/pref_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698