Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / content / common / gpu / gpu_memory_buffer_factory_x11_pixmap.cc
blobacce3d40fcd8391a566535887bfefaca62772deb
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.
5 #include "content/common/gpu/gpu_memory_buffer_factory_x11_pixmap.h"
7 #include "ui/gl/gl_image_glx.h"
9 namespace content {
11 GpuMemoryBufferFactoryX11Pixmap::GpuMemoryBufferFactoryX11Pixmap() {
14 GpuMemoryBufferFactoryX11Pixmap::~GpuMemoryBufferFactoryX11Pixmap() {
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;
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);
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>();
43 scoped_refptr<gfx::GLImageGLX> image(
44 new gfx::GLImageGLX(size, internalformat));
45 if (!image->Initialize(it->second))
46 return scoped_refptr<gfx::GLImage>();
48 return image;
51 } // namespace content