Skip to content

Commit

Permalink
Revert 86625 - This change implements a first pass in the effort to r…
Browse files Browse the repository at this point in the history
…emove the dependency of PlatformDevice within Chrome. The Skia library now provides multiple back-ends for the SkDevice class, so PlatformDevice's inheritance of SkDevice, and the assumption of instances of PlatformDevice limits the use of these new back-ends.

A new set of helper functions is provided for the PlatformDevice entry points.  Upon construction of a PlatformDevice, a pointer to the interface is cached in the parent SkDevice's SkMetaData.  The new helper functions forward calls to the interface cached in the metadata.

BUG=NONE
TEST=NONE
Review URL: http://codereview.chromium.org/7019013

TBR=twiz@chromium.org
Review URL: http://codereview.chromium.org/6987019

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86629 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
vandebo@chromium.org committed May 25, 2011
1 parent 49578ea commit f2d4c67
Show file tree
Hide file tree
Showing 95 changed files with 437 additions and 566 deletions.
2 changes: 1 addition & 1 deletion chrome/browser/aeropeek_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1244,7 +1244,7 @@ bool AeroPeekManager::GetTabPreview(int tab_id, SkBitmap* preview) {
&canvas))
return false;

const SkBitmap& bitmap = skia::GetTopDevice(canvas)->accessBitmap(false);
const SkBitmap& bitmap = canvas.getTopPlatformDevice().accessBitmap(false);
bitmap.copyTo(preview, SkBitmap::kARGB_8888_Config);
return true;
}
2 changes: 1 addition & 1 deletion chrome/browser/extensions/extension_tabs_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1205,7 +1205,7 @@ bool CaptureVisibleTabFunction::CaptureSnapshotFromBackingStore(
VLOG(1) << "captureVisibleTab() got image from backing store.";

SendResultFromBitmap(
skia::GetTopDevice(temp_canvas)->accessBitmap(false));
temp_canvas.getTopPlatformDevice().accessBitmap(false));
return true;
}

Expand Down
32 changes: 15 additions & 17 deletions chrome/browser/renderer_host/render_widget_host_view_win.cc
Original file line number Diff line number Diff line change
Expand Up @@ -169,22 +169,20 @@ void DrawDeemphasized(const SkColor& color,
HDC backing_store_dc,
HDC paint_dc) {
gfx::CanvasSkia canvas(paint_rect.width(), paint_rect.height(), true);
{
skia::ScopedPlatformPaint scoped_platform_paint(&canvas);
HDC dc = scoped_platform_paint.GetPlatformSurface();
BitBlt(dc,
0,
0,
paint_rect.width(),
paint_rect.height(),
backing_store_dc,
paint_rect.x(),
paint_rect.y(),
SRCCOPY);
}
HDC dc = canvas.beginPlatformPaint();
BitBlt(dc,
0,
0,
paint_rect.width(),
paint_rect.height(),
backing_store_dc,
paint_rect.x(),
paint_rect.y(),
SRCCOPY);
canvas.endPlatformPaint();
canvas.FillRectInt(color, 0, 0, paint_rect.width(), paint_rect.height());
skia::DrawToNativeContext(&canvas, paint_dc, paint_rect.x(),
paint_rect.y(), NULL);
canvas.getTopPlatformDevice().drawToHDC(paint_dc, paint_rect.x(),
paint_rect.y(), NULL);
}

// The plugin wrapper window which lives in the browser process has this proc
Expand Down Expand Up @@ -963,8 +961,8 @@ void RenderWidgetHostViewWin::DrawBackground(const RECT& dirty_rect,
dc_rect.right - dc_rect.left,
dc_rect.bottom - dc_rect.top);

skia::DrawToNativeContext(&canvas, *dc, dirty_rect.left, dirty_rect.top,
NULL);
canvas.getTopPlatformDevice().drawToHDC(*dc, dirty_rect.left,
dirty_rect.top, NULL);
} else {
HBRUSH white_brush = reinterpret_cast<HBRUSH>(GetStockObject(WHITE_BRUSH));
dc->FillRect(&dirty_rect, white_brush);
Expand Down
3 changes: 2 additions & 1 deletion chrome/browser/tab_contents/thumbnail_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include "content/browser/tab_contents/tab_contents.h"
#include "content/common/notification_service.h"
#include "googleurl/src/gurl.h"
#include "skia/ext/bitmap_platform_device.h"
#include "skia/ext/image_operations.h"
#include "skia/ext/platform_canvas.h"
#include "third_party/skia/include/core/SkBitmap.h"
Expand Down Expand Up @@ -79,7 +80,7 @@ SkBitmap GetBitmapForBackingStore(
if (!backing_store->CopyFromBackingStore(gfx::Rect(backing_store->size()),
&temp_canvas))
return result;
const SkBitmap& bmp = skia::GetTopDevice(temp_canvas)->accessBitmap(false);
const SkBitmap& bmp = temp_canvas.getTopPlatformDevice().accessBitmap(false);

// Check if a clipped thumbnail is requested.
if (options & ThumbnailGenerator::kClippedThumbnail) {
Expand Down
16 changes: 8 additions & 8 deletions chrome/browser/tab_contents/thumbnail_generator_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -103,11 +103,11 @@ class ThumbnailGeneratorTest : public testing::Test {
transport_dib_->GetPlatformCanvas(kBitmapWidth, kBitmapHeight));
switch (type) {
case TRANSPORT_BLACK:
skia::GetTopDevice(*canvas)->accessBitmap(true).eraseARGB(
canvas->getTopPlatformDevice().accessBitmap(true).eraseARGB(
0xFF, 0, 0, 0);
break;
case TRANSPORT_WHITE:
skia::GetTopDevice(*canvas)->accessBitmap(true).eraseARGB(
canvas->getTopPlatformDevice().accessBitmap(true).eraseARGB(
0xFF, 0xFF, 0xFF, 0xFF);
break;
case TRANSPORT_OTHER:
Expand Down Expand Up @@ -211,7 +211,7 @@ TEST(ThumbnailGeneratorSimpleTest, CalculateBoringScore_SingleColor) {
// Fill all pixesl in black.
canvas.FillRectInt(kBlack, 0, 0, kSize.width(), kSize.height());

SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false);
SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false);
// The thumbnail should deserve the highest boring score.
EXPECT_DOUBLE_EQ(1.0, ThumbnailGenerator::CalculateBoringScore(&bitmap));
}
Expand All @@ -227,7 +227,7 @@ TEST(ThumbnailGeneratorSimpleTest, CalculateBoringScore_TwoColors) {
// Fill the left half pixels in white.
canvas.FillRectInt(kWhite, 0, 0, kSize.width() / 2, kSize.height());

SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false);
SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false);
ASSERT_EQ(kSize.width(), bitmap.width());
ASSERT_EQ(kSize.height(), bitmap.height());
// The thumbnail should be less boring because two colors are used.
Expand All @@ -237,7 +237,7 @@ TEST(ThumbnailGeneratorSimpleTest, CalculateBoringScore_TwoColors) {
TEST(ThumbnailGeneratorSimpleTest, GetClippedBitmap_TallerThanWide) {
// The input bitmap is vertically long.
gfx::CanvasSkia canvas(40, 90, true);
const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false);
const SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false);

// The desired size is square.
ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped;
Expand All @@ -253,7 +253,7 @@ TEST(ThumbnailGeneratorSimpleTest, GetClippedBitmap_TallerThanWide) {
TEST(ThumbnailGeneratorSimpleTest, GetClippedBitmap_WiderThanTall) {
// The input bitmap is horizontally long.
gfx::CanvasSkia canvas(90, 40, true);
const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false);
const SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false);

// The desired size is square.
ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped;
Expand All @@ -269,7 +269,7 @@ TEST(ThumbnailGeneratorSimpleTest, GetClippedBitmap_WiderThanTall) {
TEST(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NotClipped) {
// The input bitmap is square.
gfx::CanvasSkia canvas(40, 40, true);
const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false);
const SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false);

// The desired size is square.
ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped;
Expand All @@ -285,7 +285,7 @@ TEST(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NotClipped) {
TEST(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NonSquareOutput) {
// The input bitmap is square.
gfx::CanvasSkia canvas(40, 40, true);
const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false);
const SkBitmap bitmap = canvas.getTopPlatformDevice().accessBitmap(false);

// The desired size is horizontally long.
ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped;
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc
Original file line number Diff line number Diff line change
Expand Up @@ -655,8 +655,7 @@ SkBitmap TabRendererGtk::PaintBitmap() {
cairo_surface_t* TabRendererGtk::PaintToSurface() {
gfx::CanvasSkia canvas(width(), height(), false);
Paint(&canvas);
return cairo_surface_reference(cairo_get_target(
skia::BeginPlatformPaint(&canvas)));
return cairo_surface_reference(cairo_get_target(canvas.beginPlatformPaint()));
}

void TabRendererGtk::SchedulePaint() {
Expand Down
2 changes: 1 addition & 1 deletion chrome/browser/ui/views/omnibox/omnibox_view_win.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2315,7 +2315,7 @@ void OmniboxViewWin::DrawSlashForInsecureScheme(HDC hdc,
}

// Now copy what we drew to the target HDC.
skia::DrawToNativeContext(&canvas, hdc,
canvas.getTopPlatformDevice().drawToHDC(hdc,
scheme_rect.left + canvas_paint_clip_rect.left - canvas_clip_rect.left,
std::max(scheme_rect.top, client_rect.top) + canvas_paint_clip_rect.top -
canvas_clip_rect.top, &canvas_paint_clip_rect);
Expand Down
2 changes: 1 addition & 1 deletion chrome/browser/ui/views/tabs/dragged_tab_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ void DraggedTabView::PaintDetachedView(gfx::Canvas* canvas) {
gfx::Size ps = GetPreferredSize();
gfx::CanvasSkia scale_canvas(ps.width(), ps.height(), false);
SkBitmap& bitmap_device = const_cast<SkBitmap&>(
skia::GetTopDevice(scale_canvas)->accessBitmap(true));
scale_canvas.getTopPlatformDevice().accessBitmap(true));
bitmap_device.eraseARGB(0, 0, 0, 0);

int tab_height = renderer_bounds_.back().height();
Expand Down
6 changes: 3 additions & 3 deletions chrome/browser/ui/views/tabs/native_view_photobooth_win.cc
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,9 @@ void NativeViewPhotoboothWin::PaintScreenshotIntoCanvas(
SRCCOPY);
// Windows screws up the alpha channel on all text it draws, and so we need
// to call makeOpaque _after_ the blit to correct for this.
skia::MakeOpaque(canvas->AsCanvasSkia(), target_bounds.x(),
target_bounds.y(), target_bounds.width(),
target_bounds.height());
canvas->AsCanvasSkia()->getTopPlatformDevice().makeOpaque(
target_bounds.x(), target_bounds.y(), target_bounds.width(),
target_bounds.height());
ReleaseDC(current_hwnd_, source_dc);
canvas->EndPlatformPaint();
}
Expand Down
16 changes: 8 additions & 8 deletions chrome/browser/ui/views/theme_helpers.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <atltheme.h>

#include "base/logging.h"
#include "skia/ext/bitmap_platform_device_win.h"
#include "third_party/skia/include/effects/SkGradientShader.h"
#include "ui/gfx/canvas_skia.h"

Expand All @@ -31,10 +32,10 @@ void GetRebarGradientColors(int width, int x1, int x2,
// On Windows XP+, if using a Theme, we can ask the theme to render the
// gradient for us.
if (!theme.IsThemeNull()) {
skia::ScopedPlatformPaint scoped_platform_paint(&canvas);
HDC dc = scoped_platform_paint.GetPlatformSurface();
HDC dc = canvas.beginPlatformPaint();
RECT rect = { 0, 0, width, 1 };
theme.DrawThemeBackground(dc, 0, 0, &rect, NULL);
canvas.endPlatformPaint();
} else {
// On Windows 2000 or Windows XP+ with the Classic theme selected, we need
// to build our own gradient using system colors.
Expand Down Expand Up @@ -63,12 +64,11 @@ void GetRebarGradientColors(int width, int x1, int x2,
// Extract the color values from the selected pixels
// The | in the following operations forces the alpha to 0xFF. This is
// needed as windows sets the alpha to 0 when it renders.
SkDevice* device = skia::GetTopDevice(canvas);
const SkBitmap& bitmap = device->accessBitmap(false);
SkAutoLockPixels lock(bitmap);

*c1 = 0xFF000000 | bitmap.getColor(x1, 0);
*c2 = 0xFF000000 | bitmap.getColor(x2, 0);
skia::BitmapPlatformDevice& device =
static_cast<skia::BitmapPlatformDevice&>(
canvas.getTopPlatformDevice());
*c1 = 0xFF000000 | device.getColorAt(x1, 0);
*c2 = 0xFF000000 | device.getColorAt(x2, 0);
}

void GetDarkLineColor(SkColor* dark_color) {
Expand Down
13 changes: 8 additions & 5 deletions chrome/renderer/chrome_render_view_observer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include "content/renderer/content_renderer_client.h"
#include "googleurl/src/gurl.h"
#include "net/base/data_url.h"
#include "skia/ext/bitmap_platform_device.h"
#include "skia/ext/image_operations.h"
#include "skia/ext/platform_canvas.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCString.h"
Expand Down Expand Up @@ -594,9 +595,10 @@ bool ChromeRenderViewObserver::CaptureFrameThumbnail(WebView* view,
if (!PaintViewIntoCanvas(view, canvas))
return false;

SkDevice* device = skia::GetTopDevice(canvas);
skia::BitmapPlatformDevice& device =
static_cast<skia::BitmapPlatformDevice&>(canvas.getTopPlatformDevice());

const SkBitmap& src_bmp = device->accessBitmap(false);
const SkBitmap& src_bmp = device.accessBitmap(false);

SkRect dest_rect = { 0, 0, SkIntToScalar(w), SkIntToScalar(h) };
float dest_aspect = dest_rect.width() / dest_rect.height();
Expand Down Expand Up @@ -631,7 +633,7 @@ bool ChromeRenderViewObserver::CaptureFrameThumbnail(WebView* view,
score->at_top = (view->mainFrame()->scrollOffset().height == 0);

SkBitmap subset;
device->accessBitmap(false).extractSubset(&subset, src_rect);
device.accessBitmap(false).extractSubset(&subset, src_rect);

// First do a fast downsample by powers of two to get close to the final size.
SkBitmap downsampled_subset =
Expand All @@ -657,9 +659,10 @@ bool ChromeRenderViewObserver::CaptureSnapshot(WebView* view,
if (!PaintViewIntoCanvas(view, canvas))
return false;

SkDevice* device = skia::GetTopDevice(canvas);
skia::BitmapPlatformDevice& device =
static_cast<skia::BitmapPlatformDevice&>(canvas.getTopPlatformDevice());

const SkBitmap& bitmap = device->accessBitmap(false);
const SkBitmap& bitmap = device.accessBitmap(false);
if (!bitmap.copyTo(snapshot, SkBitmap::kARGB_8888_Config))
return false;

Expand Down
2 changes: 1 addition & 1 deletion chrome/renderer/print_web_view_helper_linux.cc
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ void PrintWebViewHelper::PrintPageInternal(
gfx::Rect content_area(margin_left_in_points, margin_top_in_points,
content_width_in_points, content_height_in_points);

SkDevice* device = metafile->StartPageForVectorCanvas(
skia::PlatformDevice* device = metafile->StartPageForVectorCanvas(
page_size, content_area, 1.0f);
if (!device)
return;
Expand Down
6 changes: 3 additions & 3 deletions chrome/renderer/print_web_view_helper_win.cc
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ void PrintWebViewHelper::PrintPageInternal(
scoped_ptr<Metafile> metafile(new printing::NativeMetafile);
metafile->Init();
DCHECK(metafile->context());
skia::InitializeDC(metafile->context());
skia::PlatformDevice::InitializeDC(metafile->context());

int page_number = params.page_number;

Expand Down Expand Up @@ -228,7 +228,7 @@ void PrintWebViewHelper::RenderPage(
static_cast<int>(margin_top_in_points),
static_cast<int>(content_width_in_points),
static_cast<int>(content_height_in_points));
SkDevice* device = (*metafile)->StartPageForVectorCanvas(
skia::PlatformDevice* device = (*metafile)->StartPageForVectorCanvas(
page_size, content_area, frame->getPrintPageShrink(page_number));
DCHECK(device);
// The printPage method may take a reference to the canvas we pass down, so it
Expand Down Expand Up @@ -290,7 +290,7 @@ void PrintWebViewHelper::RenderPage(
metafile2->Init();
HDC hdc = metafile2->context();
DCHECK(hdc);
skia::InitializeDC(hdc);
skia::PlatformDevice::InitializeDC(hdc);

RECT metafile_bounds = (*metafile)->GetPageBounds(1).ToRECT();
// Process the old metafile, placing all non-AlphaBlend calls into the
Expand Down
6 changes: 4 additions & 2 deletions chrome/renderer/safe_browsing/phishing_thumbnailer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "base/metrics/histogram.h"
#include "base/time.h"
#include "content/renderer/render_view.h"
#include "skia/ext/bitmap_platform_device.h"
#include "skia/ext/image_operations.h"
#include "skia/ext/platform_canvas.h"
#include "third_party/skia/include/core/SkBitmap.h"
Expand Down Expand Up @@ -52,11 +53,12 @@ SkBitmap GrabPhishingThumbnail(RenderView* render_view,
view->paint(webkit_glue::ToWebCanvas(&canvas),
WebRect(0, 0, view_size.width(), view_size.height()));

SkDevice* device = skia::GetTopDevice(canvas);
skia::BitmapPlatformDevice& device =
static_cast<skia::BitmapPlatformDevice&>(canvas.getTopPlatformDevice());

// Now resize the thumbnail to the right size. Note: it is important that we
// use this resize algorithm here.
const SkBitmap& bitmap = device->accessBitmap(false);
const SkBitmap& bitmap = device.accessBitmap(false);
SkBitmap thumbnail = skia::ImageOperations::Resize(
bitmap,
skia::ImageOperations::RESIZE_LANCZOS3,
Expand Down
4 changes: 2 additions & 2 deletions content/browser/renderer_host/backing_store_mac.mm
Original file line number Diff line number Diff line change
Expand Up @@ -123,14 +123,14 @@ bool NeedsLayerWorkaround() {
if (!output->initialize(rect.width(), rect.height(), true))
return false;

skia::ScopedPlatformPaint scoped_platform_paint(output);
CGContextRef temp_context = scoped_platform_paint.GetPlatformSurface();
CGContextRef temp_context = output->beginPlatformPaint();
CGContextSaveGState(temp_context);
CGContextTranslateCTM(temp_context, 0.0, size().height());
CGContextScaleCTM(temp_context, 1.0, -1.0);
CGContextDrawLayerAtPoint(temp_context, CGPointMake(rect.x(), rect.y()),
cg_layer());
CGContextRestoreGState(temp_context);
output->endPlatformPaint();
return true;
}

Expand Down
4 changes: 2 additions & 2 deletions content/browser/renderer_host/backing_store_skia.cc
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ void BackingStoreSkia::PaintToBackingStore(
SkRect dstrect = SkRect::MakeXYWH(
SkIntToScalar(copy_rect.x()), SkIntToScalar(copy_rect.y()),
SkIntToScalar(w), SkIntToScalar(h));
SkBitmap b = skia::GetTopDevice(*p_canvas)->accessBitmap(false);
SkBitmap b = p_canvas->getTopPlatformDevice().accessBitmap(false);
canvas_.get()->drawBitmapRect(b, &srcrect, dstrect);
}
}
Expand All @@ -95,7 +95,7 @@ bool BackingStoreSkia::CopyFromBackingStore(const gfx::Rect& rect,
if (!output->initialize(width, height, true))
return false;

SkBitmap bitmap = skia::GetTopDevice(*output)->accessBitmap(true);
SkBitmap bitmap = output->getTopPlatformDevice().accessBitmap(true);
SkIRect skrect = SkIRect::MakeXYWH(rect.x(), rect.y(), width, height);
SkBitmap b;
if (!canvas_->readPixels(skrect, &b))
Expand Down
4 changes: 2 additions & 2 deletions content/browser/renderer_host/backing_store_win.cc
Original file line number Diff line number Diff line change
Expand Up @@ -158,10 +158,10 @@ bool BackingStoreWin::CopyFromBackingStore(const gfx::Rect& rect,
if (!output->initialize(rect.width(), rect.height(), true))
return false;

skia::ScopedPlatformPaint scoped_platform_paint(output);
HDC temp_dc = scoped_platform_paint.GetPlatformSurface();
HDC temp_dc = output->beginPlatformPaint();
BitBlt(temp_dc, 0, 0, rect.width(), rect.height(),
hdc(), rect.x(), rect.y(), SRCCOPY);
output->endPlatformPaint();
return true;
}

Expand Down
2 changes: 1 addition & 1 deletion content/browser/renderer_host/backing_store_x.cc
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ bool BackingStoreX::CopyFromBackingStore(const gfx::Rect& rect,
// it and copy each row out, only up to the pixels we're actually
// using. This code assumes a visual mode where a pixel is
// represented using a 32-bit unsigned int, with a byte per component.
SkBitmap bitmap = skia::GetTopDevice(*output)->accessBitmap(true);
SkBitmap bitmap = output->getTopPlatformDevice().accessBitmap(true);
for (int y = 0; y < height; y++) {
const uint32* src_row = reinterpret_cast<uint32*>(
&image->data[image->bytes_per_line * y]);
Expand Down
2 changes: 1 addition & 1 deletion content/plugin/webplugin_proxy.cc
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ void WebPluginProxy::Paint(const gfx::Rect& rect) {
// into (which is windowless_canvas_) so it can do blending. So we copy the
// background bitmap into the windowless_canvas_.
const SkBitmap& background_bitmap =
skia::GetTopDevice(*background_canvas_)->accessBitmap(false);
background_canvas_->getTopPlatformDevice().accessBitmap(false);
windowless_canvas_->drawBitmap(background_bitmap, 0, 0);
} else {
// In non-transparent mode, the plugin doesn't care what's underneath, so we
Expand Down
Loading

0 comments on commit f2d4c67

Please sign in to comment.