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

Side by Side Diff: ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc

Issue 989993002: x11: Use scoped_ptr<> for X11 objects where it makes sense. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 9 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h" 5 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h"
6 6
7 #include <X11/extensions/shape.h> 7 #include <X11/extensions/shape.h>
8 #include <X11/extensions/XInput2.h> 8 #include <X11/extensions/XInput2.h>
9 #include <X11/Xatom.h> 9 #include <X11/Xatom.h>
10 #include <X11/Xregion.h> 10 #include <X11/Xregion.h>
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 // none. The comment in desktop_native_widget_aura.cc suggests that this 800 // none. The comment in desktop_native_widget_aura.cc suggests that this
801 // is rare. 801 // is rare.
802 NOTIMPLEMENTED(); 802 NOTIMPLEMENTED();
803 } 803 }
804 } 804 }
805 805
806 void DesktopWindowTreeHostX11::FlashFrame(bool flash_frame) { 806 void DesktopWindowTreeHostX11::FlashFrame(bool flash_frame) {
807 if (urgency_hint_set_ == flash_frame) 807 if (urgency_hint_set_ == flash_frame)
808 return; 808 return;
809 809
810 XWMHints* hints = XGetWMHints(xdisplay_, xwindow_); 810 gfx::XScopedPtr<XWMHints> hints(XGetWMHints(xdisplay_, xwindow_));
811 if (!hints) { 811 if (!hints) {
812 // The window hasn't had its hints set yet. 812 // The window hasn't had its hints set yet.
813 hints = XAllocWMHints(); 813 hints.reset(XAllocWMHints());
814 } 814 }
815 815
816 if (flash_frame) 816 if (flash_frame)
817 hints->flags |= XUrgencyHint; 817 hints->flags |= XUrgencyHint;
818 else 818 else
819 hints->flags &= ~XUrgencyHint; 819 hints->flags &= ~XUrgencyHint;
820 820
821 XSetWMHints(xdisplay_, xwindow_, hints); 821 XSetWMHints(xdisplay_, xwindow_, hints.get());
822 XFree(hints);
823 822
824 urgency_hint_set_ = flash_frame; 823 urgency_hint_set_ = flash_frame;
825 } 824 }
826 825
827 void DesktopWindowTreeHostX11::OnRootViewLayout() { 826 void DesktopWindowTreeHostX11::OnRootViewLayout() {
828 UpdateMinAndMaxSize(); 827 UpdateMinAndMaxSize();
829 } 828 }
830 829
831 void DesktopWindowTreeHostX11::OnNativeWidgetFocus() { 830 void DesktopWindowTreeHostX11::OnNativeWidgetFocus() {
832 native_widget_delegate_->AsWidget()->GetInputMethod()->OnFocus(); 831 native_widget_delegate_->AsWidget()->GetInputMethod()->OnFocus();
(...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after
1528 SkAutoLockPixels locker(bitmap); 1527 SkAutoLockPixels locker(bitmap);
1529 1528
1530 for (int y = 0; y < height; ++y) 1529 for (int y = 0; y < height; ++y)
1531 for (int x = 0; x < width; ++x) 1530 for (int x = 0; x < width; ++x)
1532 data->push_back(bitmap.getColor(x, y)); 1531 data->push_back(bitmap.getColor(x, y));
1533 } 1532 }
1534 1533
1535 Visual* DesktopWindowTreeHostX11::GetARGBVisual() { 1534 Visual* DesktopWindowTreeHostX11::GetARGBVisual() {
1536 XVisualInfo visual_template; 1535 XVisualInfo visual_template;
1537 visual_template.screen = 0; 1536 visual_template.screen = 0;
1538 Visual* to_return = NULL;
1539 1537
1540 int visuals_len; 1538 int visuals_len;
1541 XVisualInfo* visual_list = XGetVisualInfo(xdisplay_, 1539 gfx::XScopedPtr<XVisualInfo[]> visual_list(XGetVisualInfo(
1542 VisualScreenMask, 1540 xdisplay_, VisualScreenMask, &visual_template, &visuals_len));
1543 &visual_template, &visuals_len);
1544 for (int i = 0; i < visuals_len; ++i) { 1541 for (int i = 0; i < visuals_len; ++i) {
1545 // Why support only 8888 ARGB? Because it's all that GTK+ supports. In 1542 // Why support only 8888 ARGB? Because it's all that GTK+ supports. In
1546 // gdkvisual-x11.cc, they look for this specific visual and use it for all 1543 // gdkvisual-x11.cc, they look for this specific visual and use it for all
1547 // their alpha channel using needs. 1544 // their alpha channel using needs.
1548 // 1545 //
1549 // TODO(erg): While the following does find a valid visual, some GL drivers 1546 // TODO(erg): While the following does find a valid visual, some GL drivers
1550 // don't believe that this has an alpha channel. According to marcheu@, 1547 // don't believe that this has an alpha channel. According to marcheu@,
1551 // this should work on open source driver though. (It doesn't work with 1548 // this should work on open source driver though. (It doesn't work with
1552 // NVidia's binaries currently.) http://crbug.com/369209 1549 // NVidia's binaries currently.) http://crbug.com/369209
1553 if (visual_list[i].depth == 32 && 1550 const XVisualInfo& info = visual_list[i];
1554 visual_list[i].visual->red_mask == 0xff0000 && 1551 if (info.depth == 32 && info.visual->red_mask == 0xff0000 &&
1555 visual_list[i].visual->green_mask == 0x00ff00 && 1552 info.visual->green_mask == 0x00ff00 &&
1556 visual_list[i].visual->blue_mask == 0x0000ff) { 1553 info.visual->blue_mask == 0x0000ff) {
1557 to_return = visual_list[i].visual; 1554 return info.visual;
1558 break;
1559 } 1555 }
1560 } 1556 }
1561 1557
1562 if (visual_list) 1558 return nullptr;
1563 XFree(visual_list);
1564
1565 return to_return;
1566 } 1559 }
1567 1560
1568 std::list<XID>& DesktopWindowTreeHostX11::open_windows() { 1561 std::list<XID>& DesktopWindowTreeHostX11::open_windows() {
1569 if (!open_windows_) 1562 if (!open_windows_)
1570 open_windows_ = new std::list<XID>(); 1563 open_windows_ = new std::list<XID>();
1571 return *open_windows_; 1564 return *open_windows_;
1572 } 1565 }
1573 1566
1574 void DesktopWindowTreeHostX11::MapWindow(ui::WindowShowState show_state) { 1567 void DesktopWindowTreeHostX11::MapWindow(ui::WindowShowState show_state) {
1575 if (show_state != ui::SHOW_STATE_DEFAULT && 1568 if (show_state != ui::SHOW_STATE_DEFAULT &&
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
1986 if (linux_ui) { 1979 if (linux_ui) {
1987 ui::NativeTheme* native_theme = linux_ui->GetNativeTheme(window); 1980 ui::NativeTheme* native_theme = linux_ui->GetNativeTheme(window);
1988 if (native_theme) 1981 if (native_theme)
1989 return native_theme; 1982 return native_theme;
1990 } 1983 }
1991 1984
1992 return ui::NativeTheme::instance(); 1985 return ui::NativeTheme::instance();
1993 } 1986 }
1994 1987
1995 } // namespace views 1988 } // namespace views
OLDNEW
« no previous file with comments | « ui/gl/gl_surface_glx.cc ('k') | ui/views/widget/desktop_aura/desktop_window_tree_host_x11_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698