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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp

Issue 2833593002: Remove unneeded abstractions and simplify RecordingImageBufferSurface (Closed)
Patch Set: imagebuffersurface-cleanups: morefixcompile Created 3 years, 8 months 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2008, Google Inc. All rights reserved. 2 * Copyright (c) 2008, Google Inc. All rights reserved.
3 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> 3 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org>
4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. 4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are 7 * modification, are permitted provided that the following conditions are
8 * met: 8 * met:
9 * 9 *
10 * * Redistributions of source code must retain the above copyright 10 * * Redistributions of source code must retain the above copyright
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 DCHECK_GT(global_accelerated_image_buffer_count_, 0u); 518 DCHECK_GT(global_accelerated_image_buffer_count_, 0u);
519 global_accelerated_image_buffer_count_--; 519 global_accelerated_image_buffer_count_--;
520 global_gpu_memory_usage_ -= gpu_memory_usage_; 520 global_gpu_memory_usage_ -= gpu_memory_usage_;
521 gpu_memory_usage_ = 0; 521 gpu_memory_usage_ = 0;
522 522
523 if (client_) 523 if (client_)
524 client_->DidDisableAcceleration(); 524 client_->DidDisableAcceleration();
525 } 525 }
526 } 526 }
527 527
528 namespace {
529
530 class UnacceleratedSurfaceFactory
531 : public RecordingImageBufferFallbackSurfaceFactory {
532 public:
533 virtual std::unique_ptr<ImageBufferSurface> CreateSurface(
534 const IntSize& size,
535 OpacityMode opacity_mode,
536 const CanvasColorParams& color_params) {
537 return WTF::WrapUnique(new UnacceleratedImageBufferSurface(
538 size, opacity_mode, kInitializeImagePixels, color_params));
539 }
540
541 virtual ~UnacceleratedSurfaceFactory() {}
542 };
543
544 } // namespace
545
546 void ImageBuffer::DisableAcceleration() { 528 void ImageBuffer::DisableAcceleration() {
547 if (!IsAccelerated()) 529 if (!IsAccelerated())
548 return; 530 return;
549 531
550 // Create and configure a recording (unaccelerated) surface. 532 // Create and configure a recording (unaccelerated) surface.
551 std::unique_ptr<RecordingImageBufferFallbackSurfaceFactory> surface_factory =
552 WTF::MakeUnique<UnacceleratedSurfaceFactory>();
553 std::unique_ptr<ImageBufferSurface> surface = 533 std::unique_ptr<ImageBufferSurface> surface =
554 WTF::WrapUnique(new RecordingImageBufferSurface( 534 WTF::WrapUnique(new RecordingImageBufferSurface(
555 surface_->size(), std::move(surface_factory), 535 surface_->size(), surface_->GetOpacityMode(),
556 surface_->GetOpacityMode(), surface_->color_params())); 536 surface_->color_params()));
557 SetSurface(std::move(surface)); 537 SetSurface(std::move(surface));
558 } 538 }
559 539
560 void ImageBuffer::SetSurface(std::unique_ptr<ImageBufferSurface> surface) { 540 void ImageBuffer::SetSurface(std::unique_ptr<ImageBufferSurface> surface) {
561 sk_sp<SkImage> image = 541 sk_sp<SkImage> image =
562 surface_->NewImageSnapshot(kPreferNoAcceleration, kSnapshotReasonPaint); 542 surface_->NewImageSnapshot(kPreferNoAcceleration, kSnapshotReasonPaint);
563 543
564 // image can be null if alloaction failed in which case we should just 544 // image can be null if alloaction failed in which case we should just
565 // abort the surface switch to reatain the old surface which is still 545 // abort the surface switch to reatain the old surface which is still
566 // functional. 546 // functional.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 DCHECK(MIMETypeRegistry::IsSupportedImageMIMETypeForEncoding(mime_type)); 597 DCHECK(MIMETypeRegistry::IsSupportedImageMIMETypeForEncoding(mime_type));
618 598
619 Vector<unsigned char> result; 599 Vector<unsigned char> result;
620 if (!EncodeImage(mime_type, quality, &result)) 600 if (!EncodeImage(mime_type, quality, &result))
621 return "data:,"; 601 return "data:,";
622 602
623 return "data:" + mime_type + ";base64," + Base64Encode(result); 603 return "data:" + mime_type + ";base64," + Base64Encode(result);
624 } 604 }
625 605
626 } // namespace blink 606 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698