55 lines
1.7 KiB
C++
55 lines
1.7 KiB
C++
// 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
|