Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / content / common / gpu / gpu_memory_buffer_factory_x11_pixmap.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/common/gpu/gpu_memory_buffer_factory_x11_pixmap.h"
6
7 #include "ui/gl/gl_image_glx.h"
8
9 namespace content {
10
11 GpuMemoryBufferFactoryX11Pixmap::GpuMemoryBufferFactoryX11Pixmap() {
12 }
13
14 GpuMemoryBufferFactoryX11Pixmap::~GpuMemoryBufferFactoryX11Pixmap() {
15 }
16
17 void GpuMemoryBufferFactoryX11Pixmap::CreateGpuMemoryBuffer(
18     const gfx::GpuMemoryBufferId& id,
19     XID pixmap) {
20   X11PixmapMapKey key(id.primary_id, id.secondary_id);
21   DCHECK(pixmaps_.find(key) == pixmaps_.end());
22   pixmaps_[key] = pixmap;
23 }
24
25 void GpuMemoryBufferFactoryX11Pixmap::DestroyGpuMemoryBuffer(
26     const gfx::GpuMemoryBufferId& id) {
27   X11PixmapMapKey key(id.primary_id, id.secondary_id);
28   X11PixmapMap::iterator it = pixmaps_.find(key);
29   if (it != pixmaps_.end())
30     pixmaps_.erase(it);
31 }
32
33 scoped_refptr<gfx::GLImage>
34 GpuMemoryBufferFactoryX11Pixmap::CreateImageForGpuMemoryBuffer(
35     const gfx::GpuMemoryBufferId& id,
36     const gfx::Size& size,
37     unsigned internalformat) {
38   X11PixmapMapKey key(id.primary_id, id.secondary_id);
39   X11PixmapMap::iterator it = pixmaps_.find(key);
40   if (it == pixmaps_.end())
41     return scoped_refptr<gfx::GLImage>();
42
43   scoped_refptr<gfx::GLImageGLX> image(
44       new gfx::GLImageGLX(size, internalformat));
45   if (!image->Initialize(it->second))
46     return scoped_refptr<gfx::GLImage>();
47
48   return image;
49 }
50
51 }  // namespace content