Index: ui/gfx/render_text_win.cc |
=================================================================== |
--- ui/gfx/render_text_win.cc (revision 109436) |
+++ ui/gfx/render_text_win.cc (working copy) |
@@ -10,6 +10,7 @@ |
#include "base/logging.h" |
#include "base/stl_util.h" |
#include "base/string_util.h" |
+#include "base/win/scoped_hdc.h" |
#include "third_party/skia/include/core/SkTypeface.h" |
#include "ui/gfx/canvas.h" |
#include "ui/gfx/canvas_skia.h" |
@@ -316,9 +317,8 @@ |
void RenderTextWin::UpdateLayout() { |
// TODO(msw): Skip complex processing if ScriptIsComplex returns false. |
ItemizeLogicalText(); |
- HDC hdc = CreateCompatibleDC(NULL); |
- LayoutVisualText(hdc); |
- DeleteDC(hdc); |
+ if (!runs_.empty()) |
+ LayoutVisualText(); |
} |
size_t RenderTextWin::IndexOfAdjacentGrapheme(size_t index, bool next) { |
@@ -398,8 +398,9 @@ |
} |
} |
-void RenderTextWin::LayoutVisualText(HDC hdc) { |
+void RenderTextWin::LayoutVisualText() { |
HRESULT hr = E_FAIL; |
+ base::win::ScopedCreateDC hdc(CreateCompatibleDC(NULL)); |
std::vector<internal::TextRun*>::const_iterator run_iter; |
for (run_iter = runs_.begin(); run_iter < runs_.end(); ++run_iter) { |
internal::TextRun* run = *run_iter; |