Index: skia/ext/vector_platform_device_emf_win.cc |
=================================================================== |
--- skia/ext/vector_platform_device_emf_win.cc (revision 96545) |
+++ skia/ext/vector_platform_device_emf_win.cc (working copy) |
@@ -15,9 +15,9 @@ |
namespace skia { |
//static |
-PlatformDevice* VectorPlatformDeviceEmf::CreateDevice(int width, int height, |
- bool is_opaque, |
- HANDLE shared_section) { |
+SkDevice* VectorPlatformDeviceEmf::CreateDevice(int width, int height, |
+ bool is_opaque, |
+ HANDLE shared_section) { |
if (!is_opaque) { |
// TODO(maruel): http://crbug.com/18382 When restoring a semi-transparent |
// layer, i.e. merging it, we need to rasterize it because GDI doesn't |
@@ -40,7 +40,7 @@ |
// SkScalarRound(value) as SkScalarRound(value * 10). Safari is already |
// doing the same for text rendering. |
SkASSERT(shared_section); |
- PlatformDevice* device = VectorPlatformDeviceEmf::create( |
+ SkDevice* device = VectorPlatformDeviceEmf::create( |
reinterpret_cast<HDC>(shared_section), width, height); |
return device; |
} |
@@ -59,9 +59,7 @@ |
hdr->biClrImportant = 0; |
} |
-VectorPlatformDeviceEmf* VectorPlatformDeviceEmf::create(HDC dc, |
- int width, |
- int height) { |
+SkDevice* VectorPlatformDeviceEmf::create(HDC dc, int width, int height) { |
InitializeDC(dc); |
// Link the SkBitmap to the current selected bitmap in the device context. |
@@ -92,16 +90,23 @@ |
if (!succeeded) |
bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height); |
- return new VectorPlatformDeviceEmf(dc, bitmap); |
+ VectorPlatformDeviceEmf* vector_device = new VectorPlatformDeviceEmf(dc, bitmap); |
+ //return new VectorPlatformDeviceEmf(dc, bitmap); |
+ return vector_device->GetOwningDevice(); |
} |
VectorPlatformDeviceEmf::VectorPlatformDeviceEmf(HDC dc, const SkBitmap& bitmap) |
- : PlatformDevice(bitmap), |
+ : SkDevice(bitmap), |
+ PlatformDevice(static_cast<SkDevice*>(this)), |
hdc_(dc), |
previous_brush_(NULL), |
previous_pen_(NULL), |
alpha_blend_used_(false) { |
transform_.reset(); |
+ // Pass false, because VectorPlatformDeviceEmf inherits both SkDevice, and |
+ // PlatformDevice, so there is no need to explicitly bind the lifetime of the |
+ // two classes. |
+ SetPlatformDevice(device_, this, false); |
} |
VectorPlatformDeviceEmf::~VectorPlatformDeviceEmf() { |