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

Side by Side Diff: printing/image_win.cc

Issue 1406403007: Eliminate HICON leaks caused by creating icons from bitmap image. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years 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 | « printing/emf_win.cc ('k') | remoting/host/desktop_shape_tracker_win.cc » ('j') | 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) 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 "printing/image.h" 5 #include "printing/image.h"
6 6
7 #include "base/win/scoped_gdi_object.h" 7 #include "base/win/scoped_gdi_object.h"
8 #include "base/win/scoped_hdc.h" 8 #include "base/win/scoped_hdc.h"
9 #include "base/win/scoped_select_object.h" 9 #include "base/win/scoped_select_object.h"
10 #include "printing/metafile.h" 10 #include "printing/metafile.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 63
64 if (rect.width() < 1 || rect.height() < 1) 64 if (rect.width() < 1 || rect.height() < 1)
65 return false; 65 return false;
66 66
67 size_ = rect.size(); 67 size_ = rect.size();
68 gfx::CreateBitmapV4Header(rect.width(), rect.height(), &hdr); 68 gfx::CreateBitmapV4Header(rect.width(), rect.height(), &hdr);
69 unsigned char* bits = NULL; 69 unsigned char* bits = NULL;
70 base::win::ScopedBitmap bitmap( 70 base::win::ScopedBitmap bitmap(
71 ::CreateDIBSection(hdc.Get(), reinterpret_cast<BITMAPINFO*>(&hdr), 0, 71 ::CreateDIBSection(hdc.Get(), reinterpret_cast<BITMAPINFO*>(&hdr), 0,
72 reinterpret_cast<void**>(&bits), NULL, 0)); 72 reinterpret_cast<void**>(&bits), NULL, 0));
73 DCHECK(bitmap); 73 DCHECK(bitmap.is_valid());
74 base::win::ScopedSelectObject select_object(hdc.Get(), bitmap); 74 base::win::ScopedSelectObject select_object(hdc.Get(), bitmap.get());
75 75
76 skia::InitializeDC(hdc.Get()); 76 skia::InitializeDC(hdc.Get());
77 77
78 bool success = metafile.Playback(hdc.Get(), NULL); 78 bool success = metafile.Playback(hdc.Get(), NULL);
79 79
80 row_length_ = size_.width() * sizeof(uint32_t); 80 row_length_ = size_.width() * sizeof(uint32_t);
81 size_t bytes = row_length_ * size_.height(); 81 size_t bytes = row_length_ * size_.height();
82 DCHECK(bytes); 82 DCHECK(bytes);
83 83
84 data_.assign(bits, bits + bytes); 84 data_.assign(bits, bits + bytes);
85 85
86 return success; 86 return success;
87 } 87 }
88 88
89 } // namespace printing 89 } // namespace printing
OLDNEW
« no previous file with comments | « printing/emf_win.cc ('k') | remoting/host/desktop_shape_tracker_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698