]> git.sesse.net Git - casparcg/blobdiff - dependencies64/cef/linux/tests/cefclient/browser/temp_window_x11.cc
Upgrade CEF to 3.3029.1611.g44e39a8 / Chromium 58.0.3029.81.
[casparcg] / dependencies64 / cef / linux / tests / cefclient / browser / temp_window_x11.cc
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 (file)
index 0000000..5e8af83
--- /dev/null
@@ -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 <X11/Xlib.h>
+
+#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