OLD | NEW |
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
| 5 #include <gflags/gflags.h> |
| 6 |
5 #include "base/logging.h" | 7 #include "base/logging.h" |
6 #include "main.h" | 8 #include "main.h" |
7 #include "xlib_window.h" | 9 #include "xlib_window.h" |
8 | 10 |
9 | 11 |
10 Display *g_xlib_display = NULL; | 12 Display *g_xlib_display = NULL; |
11 Window g_xlib_window = 0; | 13 Window g_xlib_window = 0; |
12 | 14 |
13 GLint g_width = WINDOW_WIDTH; | 15 GLint g_width = WINDOW_WIDTH; |
14 GLint g_height = WINDOW_HEIGHT; | 16 GLint g_height = WINDOW_HEIGHT; |
15 bool g_override_redirect = true; | 17 DEFINE_bool(override_redirect, true, "Use an override redirect window"); |
16 | 18 |
17 | 19 |
18 bool XlibInit() { | 20 bool XlibInit() { |
19 g_xlib_display = XOpenDisplay(0); | 21 g_xlib_display = XOpenDisplay(0); |
20 if (!g_xlib_display) | 22 if (!g_xlib_display) |
21 return false; | 23 return false; |
22 | 24 |
23 int screen = DefaultScreen(g_xlib_display); | 25 int screen = DefaultScreen(g_xlib_display); |
24 Window root_window = RootWindow(g_xlib_display, screen); | 26 Window root_window = RootWindow(g_xlib_display, screen); |
25 | 27 |
26 XWindowAttributes attributes; | 28 XWindowAttributes attributes; |
27 XGetWindowAttributes(g_xlib_display, root_window, &attributes); | 29 XGetWindowAttributes(g_xlib_display, root_window, &attributes); |
28 | 30 |
29 g_width = g_width == -1 ? attributes.width : g_width; | 31 g_width = g_width == -1 ? attributes.width : g_width; |
30 g_height = g_height == -1 ? attributes.height : g_height; | 32 g_height = g_height == -1 ? attributes.height : g_height; |
31 XVisualInfo* xlib_visinfo = GetXVisual(); | 33 XVisualInfo* xlib_visinfo = GetXVisual(); |
32 | 34 |
33 unsigned long mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask | | 35 unsigned long mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask | |
34 CWOverrideRedirect; | 36 CWOverrideRedirect; |
35 XSetWindowAttributes attr; | 37 XSetWindowAttributes attr; |
36 attr.background_pixel = 0; | 38 attr.background_pixel = 0; |
37 attr.border_pixel = 0; | 39 attr.border_pixel = 0; |
38 attr.colormap = XCreateColormap(g_xlib_display, root_window, | 40 attr.colormap = XCreateColormap(g_xlib_display, root_window, |
39 xlib_visinfo->visual, AllocNone); | 41 xlib_visinfo->visual, AllocNone); |
40 attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; | 42 attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; |
41 attr.override_redirect = g_override_redirect ? True : False; | 43 attr.override_redirect = FLAGS_override_redirect ? True : False; |
42 g_xlib_window = XCreateWindow(g_xlib_display, root_window, | 44 g_xlib_window = XCreateWindow(g_xlib_display, root_window, |
43 0, 0, g_width, g_height, 0, | 45 0, 0, g_width, g_height, 0, |
44 xlib_visinfo->depth, InputOutput, | 46 xlib_visinfo->depth, InputOutput, |
45 xlib_visinfo->visual, mask, &attr); | 47 xlib_visinfo->visual, mask, &attr); |
46 | 48 |
47 XMapWindow(g_xlib_display, g_xlib_window); | 49 XMapWindow(g_xlib_display, g_xlib_window); |
48 XSync(g_xlib_display, True); | 50 XSync(g_xlib_display, True); |
49 | 51 |
50 XGetWindowAttributes(g_xlib_display, g_xlib_window, &attributes); | 52 XGetWindowAttributes(g_xlib_display, g_xlib_window, &attributes); |
51 g_width = attributes.width; | 53 g_width = attributes.width; |
52 g_height = attributes.height; | 54 g_height = attributes.height; |
53 | 55 |
54 XFree(xlib_visinfo); | 56 XFree(xlib_visinfo); |
55 | 57 |
56 return true; | 58 return true; |
57 } | 59 } |
OLD | NEW |