Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: ui/base/x/x11_util.cc

Issue 6257006: Move a bunch of random other files to src/ui/base... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/base/x/x11_util.h ('k') | ui/base/x/x11_util_internal.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium 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 // This file defines utility functions for X11 (Linux only). This code has been 5 // This file defines utility functions for X11 (Linux only). This code has been
6 // ported from XCB since we can't use XCB on Ubuntu while its 32-bit support 6 // ported from XCB since we can't use XCB on Ubuntu while its 32-bit support
7 // remains woefully incomplete. 7 // remains woefully incomplete.
8 8
9 #include "app/x11_util.h" 9 #include "ui/base/x/x11_util.h"
10 10
11 #include <gdk/gdk.h> 11 #include <gdk/gdk.h>
12 #include <gdk/gdkx.h> 12 #include <gdk/gdkx.h>
13 #include <gtk/gtk.h> 13 #include <gtk/gtk.h>
14 14
15 #include <sys/ipc.h> 15 #include <sys/ipc.h>
16 #include <sys/shm.h> 16 #include <sys/shm.h>
17 17
18 #include <list> 18 #include <list>
19 #include <set> 19 #include <set>
20 20
21 #include "base/command_line.h" 21 #include "base/command_line.h"
22 #include "base/logging.h" 22 #include "base/logging.h"
23 #include "base/stringprintf.h" 23 #include "base/stringprintf.h"
24 #include "base/string_number_conversions.h" 24 #include "base/string_number_conversions.h"
25 #include "base/threading/thread.h" 25 #include "base/threading/thread.h"
26 #include "app/x11_util_internal.h"
27 #include "gfx/rect.h" 26 #include "gfx/rect.h"
28 #include "gfx/size.h" 27 #include "gfx/size.h"
28 #include "ui/base/x/x11_util_internal.h"
29 29
30 namespace x11_util { 30 namespace ui {
31 31
32 namespace { 32 namespace {
33 33
34 // Used to cache the XRenderPictFormat for a visual/display pair. 34 // Used to cache the XRenderPictFormat for a visual/display pair.
35 struct CachedPictFormat { 35 struct CachedPictFormat {
36 bool equals(Display* display, Visual* visual) const { 36 bool equals(Display* display, Visual* visual) const {
37 return display == this->display && visual == this->visual; 37 return display == this->display && visual == this->visual;
38 } 38 }
39 39
40 Display* display; 40 Display* display;
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 XID* children = NULL; 334 XID* children = NULL;
335 unsigned int num_children = 0; 335 unsigned int num_children = 0;
336 XQueryTree(GetXDisplay(), window, &root, &parent, &children, &num_children); 336 XQueryTree(GetXDisplay(), window, &root, &parent, &children, &num_children);
337 if (children) 337 if (children)
338 XFree(children); 338 XFree(children);
339 return parent; 339 return parent;
340 } 340 }
341 341
342 XID GetHighestAncestorWindow(XID window, XID root) { 342 XID GetHighestAncestorWindow(XID window, XID root) {
343 while (true) { 343 while (true) {
344 XID parent = x11_util::GetParentWindow(window); 344 XID parent = GetParentWindow(window);
345 if (parent == None) 345 if (parent == None)
346 return None; 346 return None;
347 if (parent == root) 347 if (parent == root)
348 return window; 348 return window;
349 window = parent; 349 window = parent;
350 } 350 }
351 } 351 }
352 352
353 bool GetWindowDesktop(XID window, int* desktop) { 353 bool GetWindowDesktop(XID window, int* desktop) {
354 return GetIntProperty(window, "_NET_WM_DESKTOP", desktop); 354 return GetIntProperty(window, "_NET_WM_DESKTOP", desktop);
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 if (children) 637 if (children)
638 XFree(children); 638 XFree(children);
639 639
640 *parent_is_root = root_window == *parent_window; 640 *parent_is_root = root_window == *parent_window;
641 return true; 641 return true;
642 } 642 }
643 643
644 bool GetWindowManagerName(std::string* wm_name) { 644 bool GetWindowManagerName(std::string* wm_name) {
645 DCHECK(wm_name); 645 DCHECK(wm_name);
646 int wm_window = 0; 646 int wm_window = 0;
647 if (!x11_util::GetIntProperty(x11_util::GetX11RootWindow(), 647 if (!GetIntProperty(GetX11RootWindow(),
648 "_NET_SUPPORTING_WM_CHECK", 648 "_NET_SUPPORTING_WM_CHECK",
649 &wm_window)) { 649 &wm_window)) {
650 return false; 650 return false;
651 } 651 }
652 652
653 // It's possible that a window manager started earlier in this X session left 653 // It's possible that a window manager started earlier in this X session left
654 // a stale _NET_SUPPORTING_WM_CHECK property when it was replaced by a 654 // a stale _NET_SUPPORTING_WM_CHECK property when it was replaced by a
655 // non-EWMH window manager, so we trap errors in the following requests to 655 // non-EWMH window manager, so we trap errors in the following requests to
656 // avoid crashes (issue 23860). 656 // avoid crashes (issue 23860).
657 657
658 // EWMH requires the supporting-WM window to also have a 658 // EWMH requires the supporting-WM window to also have a
659 // _NET_SUPPORTING_WM_CHECK property pointing to itself (to avoid a stale 659 // _NET_SUPPORTING_WM_CHECK property pointing to itself (to avoid a stale
660 // property referencing an ID that's been recycled for another window), so we 660 // property referencing an ID that's been recycled for another window), so we
661 // check that too. 661 // check that too.
662 gdk_error_trap_push(); 662 gdk_error_trap_push();
663 int wm_window_property = 0; 663 int wm_window_property = 0;
664 bool result = x11_util::GetIntProperty( 664 bool result = GetIntProperty(
665 wm_window, "_NET_SUPPORTING_WM_CHECK", &wm_window_property); 665 wm_window, "_NET_SUPPORTING_WM_CHECK", &wm_window_property);
666 gdk_flush(); 666 gdk_flush();
667 bool got_error = gdk_error_trap_pop(); 667 bool got_error = gdk_error_trap_pop();
668 if (got_error || !result || wm_window_property != wm_window) 668 if (got_error || !result || wm_window_property != wm_window)
669 return false; 669 return false;
670 670
671 gdk_error_trap_push(); 671 gdk_error_trap_push();
672 result = x11_util::GetStringProperty( 672 result = GetStringProperty(
673 static_cast<XID>(wm_window), "_NET_WM_NAME", wm_name); 673 static_cast<XID>(wm_window), "_NET_WM_NAME", wm_name);
674 gdk_flush(); 674 gdk_flush();
675 got_error = gdk_error_trap_pop(); 675 got_error = gdk_error_trap_pop();
676 return !got_error && result; 676 return !got_error && result;
677 } 677 }
678 678
679 static cairo_status_t SnapshotCallback( 679 static cairo_status_t SnapshotCallback(
680 void *closure, const unsigned char *data, unsigned int length) { 680 void *closure, const unsigned char *data, unsigned int length) {
681 std::vector<unsigned char>* png_representation = 681 std::vector<unsigned char>* png_representation =
682 static_cast<std::vector<unsigned char>*>(closure); 682 static_cast<std::vector<unsigned char>*>(closure);
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 return base::StringPrintf( 870 return base::StringPrintf(
871 "X Error detected: serial %lu, error_code %u (%s), " 871 "X Error detected: serial %lu, error_code %u (%s), "
872 "request_code %u minor_code %u (%s)", 872 "request_code %u minor_code %u (%s)",
873 error_event->serial, error_event->error_code, error_str, 873 error_event->serial, error_event->error_code, error_str,
874 error_event->request_code, error_event->minor_code, request_str); 874 error_event->request_code, error_event->minor_code, request_str);
875 } 875 }
876 // ---------------------------------------------------------------------------- 876 // ----------------------------------------------------------------------------
877 // End of x11_util_internal.h 877 // End of x11_util_internal.h
878 878
879 879
880 } // namespace x11_util 880 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/x/x11_util.h ('k') | ui/base/x/x11_util_internal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698