| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/exo/wayland/server.h" | 5 #include "components/exo/wayland/server.h" |
| 6 | 6 |
| 7 #include <grp.h> | 7 #include <grp.h> |
| 8 #include <linux/input.h> | 8 #include <linux/input.h> |
| 9 #include <stddef.h> | 9 #include <stddef.h> |
| 10 #include <stdint.h> | 10 #include <stdint.h> |
| (...skipping 1458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1469 | 1469 |
| 1470 void remote_surface_minimize(wl_client* client, wl_resource* resource) { | 1470 void remote_surface_minimize(wl_client* client, wl_resource* resource) { |
| 1471 GetUserDataAs<ShellSurface>(resource)->Minimize(); | 1471 GetUserDataAs<ShellSurface>(resource)->Minimize(); |
| 1472 } | 1472 } |
| 1473 | 1473 |
| 1474 void remote_surface_restore(wl_client* client, wl_resource* resource) { | 1474 void remote_surface_restore(wl_client* client, wl_resource* resource) { |
| 1475 GetUserDataAs<ShellSurface>(resource)->Restore(); | 1475 GetUserDataAs<ShellSurface>(resource)->Restore(); |
| 1476 } | 1476 } |
| 1477 | 1477 |
| 1478 void remote_surface_pin(wl_client* client, wl_resource* resource) { | 1478 void remote_surface_pin(wl_client* client, wl_resource* resource) { |
| 1479 GetUserDataAs<ShellSurface>(resource)->SetPinned(true); | 1479 GetUserDataAs<ShellSurface>(resource)->SetPinned(true, /* trusted */ false); |
| 1480 } | 1480 } |
| 1481 | 1481 |
| 1482 void remote_surface_unpin(wl_client* client, wl_resource* resource) { | 1482 void remote_surface_unpin(wl_client* client, wl_resource* resource) { |
| 1483 GetUserDataAs<ShellSurface>(resource)->SetPinned(false); | 1483 GetUserDataAs<ShellSurface>(resource)->SetPinned(false, /* trusted */ false); |
| 1484 } | 1484 } |
| 1485 | 1485 |
| 1486 void remote_surface_unfullscreen(wl_client* client, wl_resource* resource) { | 1486 void remote_surface_unfullscreen(wl_client* client, wl_resource* resource) { |
| 1487 GetUserDataAs<ShellSurface>(resource)->SetFullscreen(false); | 1487 GetUserDataAs<ShellSurface>(resource)->SetFullscreen(false); |
| 1488 } | 1488 } |
| 1489 | 1489 |
| 1490 void remote_surface_set_rectangular_shadow(wl_client* client, | 1490 void remote_surface_set_rectangular_shadow(wl_client* client, |
| 1491 wl_resource* resource, | 1491 wl_resource* resource, |
| 1492 int32_t x, | 1492 int32_t x, |
| 1493 int32_t y, | 1493 int32_t y, |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1526 GetUserDataAs<ShellSurface>(resource)->SetRectangularShadowBackgroundOpacity( | 1526 GetUserDataAs<ShellSurface>(resource)->SetRectangularShadowBackgroundOpacity( |
| 1527 wl_fixed_to_double(opacity)); | 1527 wl_fixed_to_double(opacity)); |
| 1528 } | 1528 } |
| 1529 | 1529 |
| 1530 void remote_surface_activate(wl_client* client, | 1530 void remote_surface_activate(wl_client* client, |
| 1531 wl_resource* resource, | 1531 wl_resource* resource, |
| 1532 uint32_t serial) { | 1532 uint32_t serial) { |
| 1533 GetUserDataAs<ShellSurface>(resource)->Activate(); | 1533 GetUserDataAs<ShellSurface>(resource)->Activate(); |
| 1534 } | 1534 } |
| 1535 | 1535 |
| 1536 void remote_surface_pin_with_trusted_flag(wl_client* client, |
| 1537 wl_resource* resource, |
| 1538 int32_t trusted) { |
| 1539 GetUserDataAs<ShellSurface>(resource)->SetPinned(true, trusted); |
| 1540 } |
| 1541 |
| 1536 const struct zwp_remote_surface_v1_interface remote_surface_implementation = { | 1542 const struct zwp_remote_surface_v1_interface remote_surface_implementation = { |
| 1537 remote_surface_destroy, | 1543 remote_surface_destroy, |
| 1538 remote_surface_set_app_id, | 1544 remote_surface_set_app_id, |
| 1539 remote_surface_set_window_geometry, | 1545 remote_surface_set_window_geometry, |
| 1540 remote_surface_set_scale, | 1546 remote_surface_set_scale, |
| 1541 remote_surface_fullscreen, | 1547 remote_surface_fullscreen, |
| 1542 remote_surface_maximize, | 1548 remote_surface_maximize, |
| 1543 remote_surface_minimize, | 1549 remote_surface_minimize, |
| 1544 remote_surface_restore, | 1550 remote_surface_restore, |
| 1545 remote_surface_pin, | 1551 remote_surface_pin, |
| 1546 remote_surface_unpin, | 1552 remote_surface_unpin, |
| 1547 remote_surface_unfullscreen, | 1553 remote_surface_unfullscreen, |
| 1548 remote_surface_set_rectangular_shadow, | 1554 remote_surface_set_rectangular_shadow, |
| 1549 remote_surface_set_title, | 1555 remote_surface_set_title, |
| 1550 remote_surface_set_top_inset, | 1556 remote_surface_set_top_inset, |
| 1551 remote_surface_set_system_modal, | 1557 remote_surface_set_system_modal, |
| 1552 remote_surface_unset_system_modal, | 1558 remote_surface_unset_system_modal, |
| 1553 remote_surface_set_rectangular_shadow_background_opacity, | 1559 remote_surface_set_rectangular_shadow_background_opacity, |
| 1554 remote_surface_activate}; | 1560 remote_surface_activate, |
| 1561 remote_surface_pin_with_trusted_flag}; |
| 1555 | 1562 |
| 1556 //////////////////////////////////////////////////////////////////////////////// | 1563 //////////////////////////////////////////////////////////////////////////////// |
| 1557 // notification_surface_interface: | 1564 // notification_surface_interface: |
| 1558 | 1565 |
| 1559 void notification_surface_destroy(wl_client* client, wl_resource* resource) { | 1566 void notification_surface_destroy(wl_client* client, wl_resource* resource) { |
| 1560 wl_resource_destroy(resource); | 1567 wl_resource_destroy(resource); |
| 1561 } | 1568 } |
| 1562 | 1569 |
| 1563 const struct zwp_notification_surface_v1_interface | 1570 const struct zwp_notification_surface_v1_interface |
| 1564 notification_surface_implementation = {notification_surface_destroy}; | 1571 notification_surface_implementation = {notification_surface_destroy}; |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1789 zwp_remote_surface_v1_send_unset_minimized(resource); | 1796 zwp_remote_surface_v1_send_unset_minimized(resource); |
| 1790 break; | 1797 break; |
| 1791 case ash::wm::WINDOW_STATE_TYPE_MAXIMIZED: | 1798 case ash::wm::WINDOW_STATE_TYPE_MAXIMIZED: |
| 1792 if (wl_resource_get_version(resource) >= 2) | 1799 if (wl_resource_get_version(resource) >= 2) |
| 1793 zwp_remote_surface_v1_send_unset_maximized(resource); | 1800 zwp_remote_surface_v1_send_unset_maximized(resource); |
| 1794 break; | 1801 break; |
| 1795 case ash::wm::WINDOW_STATE_TYPE_FULLSCREEN: | 1802 case ash::wm::WINDOW_STATE_TYPE_FULLSCREEN: |
| 1796 zwp_remote_surface_v1_send_unset_fullscreen(resource); | 1803 zwp_remote_surface_v1_send_unset_fullscreen(resource); |
| 1797 break; | 1804 break; |
| 1798 case ash::wm::WINDOW_STATE_TYPE_PINNED: | 1805 case ash::wm::WINDOW_STATE_TYPE_PINNED: |
| 1806 case ash::wm::WINDOW_STATE_TYPE_TRUSTED_PINNED: |
| 1799 if (wl_resource_get_version(resource) >= 3) | 1807 if (wl_resource_get_version(resource) >= 3) |
| 1800 zwp_remote_surface_v1_send_unset_pinned(resource); | 1808 zwp_remote_surface_v1_send_unset_pinned(resource); |
| 1801 break; | 1809 break; |
| 1802 default: | 1810 default: |
| 1803 break; | 1811 break; |
| 1804 } | 1812 } |
| 1805 | 1813 |
| 1806 uint32_t state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_NORMAL; | 1814 uint32_t state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_NORMAL; |
| 1807 switch (new_state_type) { | 1815 switch (new_state_type) { |
| 1808 case ash::wm::WINDOW_STATE_TYPE_MINIMIZED: | 1816 case ash::wm::WINDOW_STATE_TYPE_MINIMIZED: |
| 1809 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_MINIMIZED; | 1817 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_MINIMIZED; |
| 1810 if (wl_resource_get_version(resource) >= 2) | 1818 if (wl_resource_get_version(resource) >= 2) |
| 1811 zwp_remote_surface_v1_send_set_minimized(resource); | 1819 zwp_remote_surface_v1_send_set_minimized(resource); |
| 1812 break; | 1820 break; |
| 1813 case ash::wm::WINDOW_STATE_TYPE_MAXIMIZED: | 1821 case ash::wm::WINDOW_STATE_TYPE_MAXIMIZED: |
| 1814 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_MAXIMIZED; | 1822 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_MAXIMIZED; |
| 1815 if (wl_resource_get_version(resource) >= 2) | 1823 if (wl_resource_get_version(resource) >= 2) |
| 1816 zwp_remote_surface_v1_send_set_maximized(resource); | 1824 zwp_remote_surface_v1_send_set_maximized(resource); |
| 1817 break; | 1825 break; |
| 1818 case ash::wm::WINDOW_STATE_TYPE_FULLSCREEN: | 1826 case ash::wm::WINDOW_STATE_TYPE_FULLSCREEN: |
| 1819 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_FULLSCREEN; | 1827 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_FULLSCREEN; |
| 1820 zwp_remote_surface_v1_send_set_fullscreen(resource); | 1828 zwp_remote_surface_v1_send_set_fullscreen(resource); |
| 1821 break; | 1829 break; |
| 1822 case ash::wm::WINDOW_STATE_TYPE_PINNED: | 1830 case ash::wm::WINDOW_STATE_TYPE_PINNED: |
| 1823 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_PINNED; | 1831 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_PINNED; |
| 1824 if (wl_resource_get_version(resource) >= 3) | 1832 if (wl_resource_get_version(resource) >= 3) |
| 1825 zwp_remote_surface_v1_send_set_pinned(resource); | 1833 zwp_remote_surface_v1_send_set_pinned(resource); |
| 1826 break; | 1834 break; |
| 1835 case ash::wm::WINDOW_STATE_TYPE_TRUSTED_PINNED: |
| 1836 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_TRUSTED_PINNED; |
| 1837 if (wl_resource_get_version(resource) >= 3) |
| 1838 zwp_remote_surface_v1_send_set_pinned(resource); |
| 1839 break; |
| 1827 default: | 1840 default: |
| 1828 break; | 1841 break; |
| 1829 } | 1842 } |
| 1830 | 1843 |
| 1831 if (wl_resource_get_version(resource) >= 7) | 1844 if (wl_resource_get_version(resource) >= 7) |
| 1832 zwp_remote_surface_v1_send_state_type_changed(resource, state_type); | 1845 zwp_remote_surface_v1_send_state_type_changed(resource, state_type); |
| 1833 | 1846 |
| 1834 wl_client_flush(wl_resource_get_client(resource)); | 1847 wl_client_flush(wl_resource_get_client(resource)); |
| 1835 } | 1848 } |
| 1836 | 1849 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1889 wl_resource_get_version(resource), id); | 1902 wl_resource_get_version(resource), id); |
| 1890 SetImplementation(notification_surface_resource, | 1903 SetImplementation(notification_surface_resource, |
| 1891 ¬ification_surface_implementation, | 1904 ¬ification_surface_implementation, |
| 1892 std::move(notification_surface)); | 1905 std::move(notification_surface)); |
| 1893 } | 1906 } |
| 1894 | 1907 |
| 1895 const struct zwp_remote_shell_v1_interface remote_shell_implementation = { | 1908 const struct zwp_remote_shell_v1_interface remote_shell_implementation = { |
| 1896 remote_shell_destroy, remote_shell_get_remote_surface, | 1909 remote_shell_destroy, remote_shell_get_remote_surface, |
| 1897 remote_shell_get_notification_surface}; | 1910 remote_shell_get_notification_surface}; |
| 1898 | 1911 |
| 1899 const uint32_t remote_shell_version = 10; | 1912 const uint32_t remote_shell_version = 11; |
| 1900 | 1913 |
| 1901 void bind_remote_shell(wl_client* client, | 1914 void bind_remote_shell(wl_client* client, |
| 1902 void* data, | 1915 void* data, |
| 1903 uint32_t version, | 1916 uint32_t version, |
| 1904 uint32_t id) { | 1917 uint32_t id) { |
| 1905 wl_resource* resource = | 1918 wl_resource* resource = |
| 1906 wl_resource_create(client, &zwp_remote_shell_v1_interface, | 1919 wl_resource_create(client, &zwp_remote_shell_v1_interface, |
| 1907 std::min(version, remote_shell_version), id); | 1920 std::min(version, remote_shell_version), id); |
| 1908 | 1921 |
| 1909 SetImplementation(resource, &remote_shell_implementation, | 1922 SetImplementation(resource, &remote_shell_implementation, |
| (...skipping 1218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3128 DCHECK(event_loop); | 3141 DCHECK(event_loop); |
| 3129 wl_event_loop_dispatch(event_loop, timeout.InMilliseconds()); | 3142 wl_event_loop_dispatch(event_loop, timeout.InMilliseconds()); |
| 3130 } | 3143 } |
| 3131 | 3144 |
| 3132 void Server::Flush() { | 3145 void Server::Flush() { |
| 3133 wl_display_flush_clients(wl_display_.get()); | 3146 wl_display_flush_clients(wl_display_.get()); |
| 3134 } | 3147 } |
| 3135 | 3148 |
| 3136 } // namespace wayland | 3149 } // namespace wayland |
| 3137 } // namespace exo | 3150 } // namespace exo |
| OLD | NEW |