Index: ui/gfx/blit.cc |
diff --git a/ui/gfx/blit.cc b/ui/gfx/blit.cc |
index 5ee64701fcbab853d918f92b9e9657d5c653566e..1aeea03dfb7a58ce0ffaf5ace509a66b18219c43 100644 |
--- a/ui/gfx/blit.cc |
+++ b/ui/gfx/blit.cc |
@@ -126,30 +126,27 @@ void BlitCanvasToCanvas(SkCanvas *dst_canvas, |
skia::EndPlatformPaint(dst_canvas); |
} |
-#if defined(OS_WIN) && !defined(USE_AURA) |
- |
-void ScrollCanvas(SkCanvas* canvas, |
- const gfx::Rect& clip, |
- const gfx::Point& amount) { |
- DCHECK(!HasClipOrTransform(*canvas)); // Don't support special stuff. |
- DCHECK(skia::SupportsPlatformPaint(canvas)); |
- skia::ScopedPlatformPaint scoped_platform_paint(canvas); |
- HDC hdc = scoped_platform_paint.GetPlatformSurface(); |
- |
- RECT damaged_rect; |
- RECT r = clip.ToRECT(); |
- ScrollDC(hdc, amount.x(), amount.y(), NULL, &r, NULL, &damaged_rect); |
-} |
- |
-#elif defined(OS_POSIX) || defined(USE_AURA) |
-// Cairo has no nice scroll function so we do our own. On Mac it's possible to |
-// use platform scroll code, but it's complex so we just use the same path |
-// here. Either way it will be software-only, so it shouldn't matter much. |
- |
void ScrollCanvas(SkCanvas* canvas, |
const gfx::Rect& in_clip, |
const gfx::Point& amount) { |
DCHECK(!HasClipOrTransform(*canvas)); // Don't support special stuff. |
+#if defined(OS_WIN) |
+ // If we have a PlatformCanvas, we should use ScrollDC. Otherwise, fall |
+ // through to the software implementation. |
+ if (skia::SupportsPlatformPaint(canvas)) { |
+ skia::ScopedPlatformPaint scoped_platform_paint(canvas); |
+ HDC hdc = scoped_platform_paint.GetPlatformSurface(); |
+ |
+ RECT damaged_rect; |
+ RECT r = in_clip.ToRECT(); |
+ ScrollDC(hdc, amount.x(), amount.y(), NULL, &r, NULL, &damaged_rect); |
+ return; |
+ } |
+#endif // defined(OS_WIN) |
+ // For non-windows, always do scrolling in software. |
+ // Cairo has no nice scroll function so we do our own. On Mac it's possible to |
+ // use platform scroll code, but it's complex so we just use the same path |
+ // here. Either way it will be software-only, so it shouldn't matter much. |
SkBitmap& bitmap = const_cast<SkBitmap&>( |
skia::GetTopDevice(*canvas)->accessBitmap(true)); |
SkAutoLockPixels lock(bitmap); |
@@ -196,6 +193,4 @@ void ScrollCanvas(SkCanvas* canvas, |
} |
} |
-#endif |
- |
} // namespace gfx |