Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / content / browser / compositor / no_transport_image_transport_factory.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/compositor/no_transport_image_transport_factory.h"
6
7 #include "cc/output/context_provider.h"
8 #include "content/common/gpu/client/gl_helper.h"
9 #include "gpu/command_buffer/client/gles2_interface.h"
10 #include "ui/compositor/compositor.h"
11
12 namespace content {
13
14 NoTransportImageTransportFactory::NoTransportImageTransportFactory(
15     scoped_ptr<ui::ContextFactory> context_factory)
16     : context_factory_(context_factory.Pass()) {}
17
18 NoTransportImageTransportFactory::~NoTransportImageTransportFactory() {
19   scoped_ptr<GLHelper> lost_gl_helper = gl_helper_.Pass();
20   FOR_EACH_OBSERVER(ImageTransportFactoryObserver,
21                     observer_list_,
22                     OnLostResources());
23 }
24
25 ui::ContextFactory* NoTransportImageTransportFactory::GetContextFactory() {
26   return context_factory_.get();
27 }
28
29 gfx::GLSurfaceHandle
30 NoTransportImageTransportFactory::GetSharedSurfaceHandle() {
31   return gfx::GLSurfaceHandle();
32 }
33
34 GLHelper* NoTransportImageTransportFactory::GetGLHelper() {
35   if (!gl_helper_) {
36     context_provider_ = context_factory_->SharedMainThreadContextProvider();
37     gl_helper_.reset(new GLHelper(context_provider_->ContextGL(),
38                                   context_provider_->ContextSupport()));
39   }
40   return gl_helper_.get();
41 }
42
43 void NoTransportImageTransportFactory::AddObserver(
44     ImageTransportFactoryObserver* observer) {
45   observer_list_.AddObserver(observer);
46 }
47
48 void NoTransportImageTransportFactory::RemoveObserver(
49     ImageTransportFactoryObserver* observer) {
50   observer_list_.RemoveObserver(observer);
51 }
52
53 }  // namespace content