blob: d723e5997c3b58ca96001a49c9b44fb0663e62c0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/aura/no_transport_image_transport_factory.h"
#include "cc/output/context_provider.h"
#include "content/common/gpu/client/gl_helper.h"
#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
#include "ui/compositor/compositor.h"
namespace content {
namespace {
class FakeTexture : public ui::Texture {
public:
FakeTexture(scoped_refptr<cc::ContextProvider> context_provider,
float device_scale_factor)
: ui::Texture(false, gfx::Size(), device_scale_factor),
context_provider_(context_provider),
texture_(context_provider_->Context3d()->createTexture()) {}
virtual unsigned int PrepareTexture() OVERRIDE { return texture_; }
virtual void Consume(const std::string& mailbox_name,
const gfx::Size& new_size) OVERRIDE {
size_ = new_size;
}
private:
virtual ~FakeTexture() {
context_provider_->Context3d()->deleteTexture(texture_);
}
scoped_refptr<cc::ContextProvider> context_provider_;
unsigned texture_;
DISALLOW_COPY_AND_ASSIGN(FakeTexture);
};
} // anonymous namespace
NoTransportImageTransportFactory::NoTransportImageTransportFactory(
scoped_ptr<ui::ContextFactory> context_factory)
: context_factory_(context_factory.Pass()) {}
NoTransportImageTransportFactory::~NoTransportImageTransportFactory() {}
ui::ContextFactory* NoTransportImageTransportFactory::AsContextFactory() {
return context_factory_.get();
}
gfx::GLSurfaceHandle
NoTransportImageTransportFactory::GetSharedSurfaceHandle() {
return gfx::GLSurfaceHandle();
}
scoped_refptr<ui::Texture>
NoTransportImageTransportFactory::CreateTransportClient(
float device_scale_factor) {
return new FakeTexture(context_factory_->SharedMainThreadContextProvider(),
device_scale_factor);
}
scoped_refptr<ui::Texture> NoTransportImageTransportFactory::CreateOwnedTexture(
const gfx::Size& size,
float device_scale_factor,
unsigned int texture_id) {
return NULL;
}
GLHelper* NoTransportImageTransportFactory::GetGLHelper() {
if (!gl_helper_) {
context_provider_ = context_factory_->SharedMainThreadContextProvider();
gl_helper_.reset(new GLHelper(context_provider_->Context3d(),
context_provider_->ContextSupport()));
}
return gl_helper_.get();
}
uint32 NoTransportImageTransportFactory::InsertSyncPoint() { return 0; }
void NoTransportImageTransportFactory::WaitSyncPoint(uint32 sync_point) {}
// We don't generate lost context events, so we don't need to keep track of
// observers
void NoTransportImageTransportFactory::AddObserver(
ImageTransportFactoryObserver* observer) {}
void NoTransportImageTransportFactory::RemoveObserver(
ImageTransportFactoryObserver* observer) {}
} // namespace content
|