blob: 22905f82af0b9ed806b86ba546f7463e2d507a23 [file] [log] [blame]
// Copyright (C) 2021 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <stdio.h>
#include "../apigen-codec-common/X11Support.h"
namespace gfxstream {
struct X11State {
X11State() :
threadsInitResult(XInitThreads()),
display(XOpenDisplay(NULL)),
window(DefaultRootWindow(display)) {
fprintf(stderr, "%s: Are we testing x11? Just initialized x11 "
"with threads init status %u display %p window %p\n",
__func__, threadsInitResult, display, (void*)window);
}
Status threadsInitResult;
Display* display;
Window window;
};
// static X11State sX11State;
static X11State* x11() {
static X11State* res = new X11State;
return res;
}
void* createNativePixmap(int width, int height, int bytesPerPixel) {
auto x = x11();
auto res = XCreatePixmap(x->display, x->window, width, height, bytesPerPixel * 8);
if (!res) {
fprintf(stderr, "%s: Failed to create pixmap.\n", __func__);
}
XFlush(x->display);
return (void*)res;
}
void freeNativePixmap(void* pixmap) { XFreePixmap(x11()->display, (Pixmap)pixmap); }
} // namespace gfxstream