Merge pull request #849 from abarth/physical_size

Plumb physical size along with SkPicture
This commit is contained in:
Adam Barth 2015-08-26 09:30:40 -07:00
commit a97aef8d86
5 changed files with 7 additions and 16 deletions

View File

@ -17,14 +17,6 @@
namespace sky {
namespace shell {
namespace {
gfx::Size GetSize(SkPicture* picture) {
const SkRect& rect = picture->cullRect();
return gfx::Size(rect.width(), rect.height());
}
} // namespace
Rasterizer::Rasterizer()
: share_group_(new gfx::GLShareGroup()), weak_factory_(this) {
@ -43,16 +35,12 @@ void Rasterizer::OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) {
CHECK(surface_) << "GLSurface required.";
}
void Rasterizer::Draw(PassRefPtr<SkPicture> picture) {
void Rasterizer::Draw(PassRefPtr<SkPicture> picture, gfx::Size size) {
TRACE_EVENT0("sky", "Rasterizer::Draw");
if (!surface_)
return;
gfx::Size size = GetSize(picture.get());
if (size.IsEmpty())
return;
if (surface_->GetSize() != size)
surface_->Resize(size);

View File

@ -34,7 +34,7 @@ class Rasterizer : public GPUDelegate {
void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) override;
void OnOutputSurfaceDestroyed() override;
void Draw(PassRefPtr<SkPicture> picture) override;
void Draw(PassRefPtr<SkPicture> picture, gfx::Size size) override;
private:
void EnsureGLContext();

View File

@ -6,6 +6,7 @@
#define SKY_SHELL_GPU_DELEGATE_H_
#include "sky/engine/wtf/PassRefPtr.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/native_widget_types.h"
class SkPicture;
@ -17,7 +18,7 @@ class GPUDelegate {
public:
virtual void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) = 0;
virtual void OnOutputSurfaceDestroyed() = 0;
virtual void Draw(PassRefPtr<SkPicture> picture) = 0;
virtual void Draw(PassRefPtr<SkPicture> picture, gfx::Size size) = 0;
protected:
virtual ~GPUDelegate();

View File

@ -76,7 +76,8 @@ void Animator::BeginFrame(int64_t time_stamp) {
config_.gpu_task_runner->PostTaskAndReply(
FROM_HERE,
base::Bind(&GPUDelegate::Draw, config_.gpu_delegate, picture),
base::Bind(&GPUDelegate::Draw, config_.gpu_delegate, picture,
engine_->physical_size()),
base::Bind(&Animator::OnFrameComplete, weak_factory_.GetWeakPtr()));
}

View File

@ -56,6 +56,7 @@ class Engine : public UIDelegate,
void BeginFrame(base::TimeTicks frame_time);
PassRefPtr<SkPicture> Paint();
const gfx::Size& physical_size() { return physical_size_; }
void StartDartTracing();
void StopDartTracing(mojo::ScopedDataPipeProducerHandle producer);