OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "ppapi/proxy/ppb_font_proxy.h" | 5 #include "ppapi/proxy/ppb_font_proxy.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "ppapi/c/dev/ppb_font_dev.h" | 8 #include "ppapi/c/dev/ppb_font_dev.h" |
9 #include "ppapi/proxy/plugin_dispatcher.h" | 9 #include "ppapi/proxy/plugin_dispatcher.h" |
10 #include "ppapi/proxy/ppapi_messages.h" | 10 #include "ppapi/proxy/ppapi_messages.h" |
11 #include "ppapi/proxy/ppb_image_data_proxy.h" | 11 #include "ppapi/proxy/ppb_image_data_proxy.h" |
12 #include "ppapi/proxy/serialized_var.h" | 12 #include "ppapi/proxy/serialized_var.h" |
13 #include "ppapi/shared_impl/ppapi_preferences.h" | 13 #include "ppapi/shared_impl/ppapi_preferences.h" |
14 #include "ppapi/shared_impl/resource_object_base.h" | 14 #include "ppapi/shared_impl/resource_object_base.h" |
15 #include "ppapi/thunk/enter.h" | 15 #include "ppapi/thunk/enter.h" |
16 #include "ppapi/thunk/ppb_image_data_api.h" | 16 #include "ppapi/thunk/ppb_image_data_api.h" |
17 #include "ppapi/thunk/thunk.h" | 17 #include "ppapi/thunk/thunk.h" |
18 | 18 |
| 19 using ppapi::thunk::EnterResourceNoLock; |
19 using ppapi::thunk::PPB_ImageData_API; | 20 using ppapi::thunk::PPB_ImageData_API; |
20 using ppapi::WebKitForwarding; | 21 using ppapi::WebKitForwarding; |
21 | 22 |
22 namespace pp { | 23 namespace pp { |
23 namespace proxy { | 24 namespace proxy { |
24 | 25 |
25 namespace { | 26 namespace { |
26 | 27 |
27 bool PPTextRunToTextRun(const PP_TextRun_Dev* run, | 28 bool PPTextRunToTextRun(const PP_TextRun_Dev* run, |
28 WebKitForwarding::Font::TextRun* output) { | 29 WebKitForwarding::Font::TextRun* output) { |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 return result; | 142 return result; |
142 } | 143 } |
143 | 144 |
144 PP_Bool Font::DrawTextAt(PP_Resource pp_image_data, | 145 PP_Bool Font::DrawTextAt(PP_Resource pp_image_data, |
145 const PP_TextRun_Dev* text, | 146 const PP_TextRun_Dev* text, |
146 const PP_Point* position, | 147 const PP_Point* position, |
147 uint32_t color, | 148 uint32_t color, |
148 const PP_Rect* clip, | 149 const PP_Rect* clip, |
149 PP_Bool image_data_is_opaque) { | 150 PP_Bool image_data_is_opaque) { |
150 // Convert to an ImageData object. | 151 // Convert to an ImageData object. |
151 ppapi::ResourceObjectBase* image_base = | 152 EnterResourceNoLock<PPB_ImageData_API> enter(pp_image_data, true); |
152 ppapi::TrackerBase::Get()->GetResourceAPI(pp_image_data); | 153 if (enter.failed()) |
153 if (!image_base) | |
154 return PP_FALSE; | 154 return PP_FALSE; |
155 PPB_ImageData_API* image_api = image_base->GetAs<PPB_ImageData_API>(); | 155 ImageData* image_data = static_cast<ImageData*>(enter.object()); |
156 if (!image_api) | |
157 return PP_FALSE; | |
158 ImageData* image_data = static_cast<ImageData*>(image_api); | |
159 | 156 |
160 skia::PlatformCanvas* canvas = image_data->mapped_canvas(); | 157 skia::PlatformCanvas* canvas = image_data->mapped_canvas(); |
161 bool needs_unmapping = false; | 158 bool needs_unmapping = false; |
162 if (!canvas) { | 159 if (!canvas) { |
163 needs_unmapping = true; | 160 needs_unmapping = true; |
164 image_data->Map(); | 161 image_data->Map(); |
165 canvas = image_data->mapped_canvas(); | 162 canvas = image_data->mapped_canvas(); |
166 if (!canvas) | 163 if (!canvas) |
167 return PP_FALSE; // Failure mapping. | 164 return PP_FALSE; // Failure mapping. |
168 } | 165 } |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 return result; | 217 return result; |
221 } | 218 } |
222 | 219 |
223 void Font::RunOnWebKitThread(const base::Closure& task) { | 220 void Font::RunOnWebKitThread(const base::Closure& task) { |
224 GetDispatcher()->PostToWebKitThread(FROM_HERE, task); | 221 GetDispatcher()->PostToWebKitThread(FROM_HERE, task); |
225 webkit_event_.Wait(); | 222 webkit_event_.Wait(); |
226 } | 223 } |
227 | 224 |
228 } // namespace proxy | 225 } // namespace proxy |
229 } // namespace pp | 226 } // namespace pp |
OLD | NEW |