// // Copyright 2015 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // X11Pixmap.cpp: Implementation of OSPixmap for X11 #include "util/x11/X11Pixmap.h" X11Pixmap::X11Pixmap() : mPixmap(0), mDisplay(nullptr) {} X11Pixmap::~X11Pixmap() { if (mPixmap) { XFreePixmap(mDisplay, mPixmap); } } bool X11Pixmap::initialize(EGLNativeDisplayType display, size_t width, size_t height, int nativeVisual) { mDisplay = reinterpret_cast(display); int screen = DefaultScreen(mDisplay); Window root = RootWindow(mDisplay, screen); int depth = 0; XVisualInfo visualTemplate; visualTemplate.visualid = nativeVisual; int numVisuals = 0; XVisualInfo *info = XGetVisualInfo(mDisplay, VisualIDMask, &visualTemplate, &numVisuals); if (numVisuals == 1) { depth = info->depth; } XFree(info); mPixmap = XCreatePixmap(mDisplay, root, static_cast(width), static_cast(height), depth); return mPixmap != 0; } EGLNativePixmapType X11Pixmap::getNativePixmap() const { return mPixmap; } OSPixmap *CreateOSPixmap() { return new X11Pixmap(); }