X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=dependencies64%2Fcef%2Flinux%2Ftests%2Fcefclient%2Fbrowser%2Ftemp_window_x11.cc;fp=dependencies64%2Fcef%2Flinux%2Ftests%2Fcefclient%2Fbrowser%2Ftemp_window_x11.cc;h=5e8af83d0d9527e37abd83d71235a51ba24669b6;hb=8128744e46d808a1105fb449365d7028df8c32b4;hp=0000000000000000000000000000000000000000;hpb=3a0dc241f598cabf83bcc67970176453929a73f1;p=casparcg diff --git a/dependencies64/cef/linux/tests/cefclient/browser/temp_window_x11.cc b/dependencies64/cef/linux/tests/cefclient/browser/temp_window_x11.cc new file mode 100644 index 000000000..5e8af83d0 --- /dev/null +++ b/dependencies64/cef/linux/tests/cefclient/browser/temp_window_x11.cc @@ -0,0 +1,69 @@ +// Copyright (c) 2015 The Chromium Embedded Framework Authors. All rights +// reserved. Use of this source code is governed by a BSD-style license that +// can be found in the LICENSE file. + +#include "tests/cefclient/browser/temp_window_x11.h" + +#include + +#include "include/base/cef_logging.h" +#include "include/cef_app.h" + +namespace client { + +namespace { + + +// Create the temp window. +::Window CreateTempWindow() { + ::Display* xdisplay = cef_get_xdisplay(); + ::Window parent_xwindow = DefaultRootWindow(xdisplay); + + XSetWindowAttributes swa; + memset(&swa, 0, sizeof(swa)); + swa.background_pixmap = None; + swa.override_redirect = false; + return XCreateWindow( + xdisplay, parent_xwindow, + 0, 0, 1, 1, // size (1x1px) + 0, // border width + CopyFromParent, // depth + InputOutput, + CopyFromParent, // visual + CWBackPixmap | CWOverrideRedirect, + &swa); +} + +// Close the temp window. +void CloseTempWindow(::Window xwindow) { + ::Display* xdisplay = cef_get_xdisplay(); + XDestroyWindow(xdisplay, xwindow); +} + +TempWindowX11* g_temp_window = NULL; + +} // namespace + +TempWindowX11::TempWindowX11() + : xwindow_(kNullWindowHandle) { + DCHECK(!g_temp_window); + g_temp_window = this; + + xwindow_ = CreateTempWindow(); + CHECK(xwindow_); +} + +TempWindowX11::~TempWindowX11() { + g_temp_window = NULL; + DCHECK(xwindow_); + + CloseTempWindow(xwindow_); +} + +// static +CefWindowHandle TempWindowX11::GetWindowHandle() { + DCHECK(g_temp_window); + return g_temp_window->xwindow_; +} + +} // namespace client