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 <alpha-compositing-unstable-v1-server-protocol.h> | 7 #include <alpha-compositing-unstable-v1-server-protocol.h> |
8 #include <gaming-input-unstable-v1-server-protocol.h> | 8 #include <gaming-input-unstable-v1-server-protocol.h> |
9 #include <gaming-input-unstable-v2-server-protocol.h> | 9 #include <gaming-input-unstable-v2-server-protocol.h> |
10 #include <grp.h> | 10 #include <grp.h> |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 //////////////////////////////////////////////////////////////////////////////// | 436 //////////////////////////////////////////////////////////////////////////////// |
437 // wl_shm_interface: | 437 // wl_shm_interface: |
438 | 438 |
439 void shm_create_pool(wl_client* client, | 439 void shm_create_pool(wl_client* client, |
440 wl_resource* resource, | 440 wl_resource* resource, |
441 uint32_t id, | 441 uint32_t id, |
442 int fd, | 442 int fd, |
443 int32_t size) { | 443 int32_t size) { |
444 std::unique_ptr<SharedMemory> shared_memory = | 444 std::unique_ptr<SharedMemory> shared_memory = |
445 GetUserDataAs<Display>(resource)->CreateSharedMemory( | 445 GetUserDataAs<Display>(resource)->CreateSharedMemory( |
446 base::FileDescriptor(fd, true), size); | 446 base::SharedMemoryHandle::ImportHandle(fd), size); |
447 if (!shared_memory) { | 447 if (!shared_memory) { |
448 wl_resource_post_no_memory(resource); | 448 wl_resource_post_no_memory(resource); |
449 return; | 449 return; |
450 } | 450 } |
451 | 451 |
452 wl_resource* shm_pool_resource = | 452 wl_resource* shm_pool_resource = |
453 wl_resource_create(client, &wl_shm_pool_interface, 1, id); | 453 wl_resource_create(client, &wl_shm_pool_interface, 1, id); |
454 | 454 |
455 SetImplementation(shm_pool_resource, &shm_pool_implementation, | 455 SetImplementation(shm_pool_resource, &shm_pool_implementation, |
456 std::move(shared_memory)); | 456 std::move(shared_memory)); |
(...skipping 2285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2742 std::unique_ptr<char, base::FreeDeleter> keymap_string( | 2742 std::unique_ptr<char, base::FreeDeleter> keymap_string( |
2743 xkb_keymap_get_as_string(xkb_keymap_.get(), XKB_KEYMAP_FORMAT_TEXT_V1)); | 2743 xkb_keymap_get_as_string(xkb_keymap_.get(), XKB_KEYMAP_FORMAT_TEXT_V1)); |
2744 DCHECK(keymap_string.get()); | 2744 DCHECK(keymap_string.get()); |
2745 size_t keymap_size = strlen(keymap_string.get()) + 1; | 2745 size_t keymap_size = strlen(keymap_string.get()) + 1; |
2746 base::SharedMemory shared_keymap; | 2746 base::SharedMemory shared_keymap; |
2747 bool rv = shared_keymap.CreateAndMapAnonymous(keymap_size); | 2747 bool rv = shared_keymap.CreateAndMapAnonymous(keymap_size); |
2748 DCHECK(rv); | 2748 DCHECK(rv); |
2749 memcpy(shared_keymap.memory(), keymap_string.get(), keymap_size); | 2749 memcpy(shared_keymap.memory(), keymap_string.get(), keymap_size); |
2750 wl_keyboard_send_keymap(keyboard_resource_, | 2750 wl_keyboard_send_keymap(keyboard_resource_, |
2751 WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, | 2751 WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, |
2752 shared_keymap.handle().fd, keymap_size); | 2752 shared_keymap.handle().GetHandle(), keymap_size); |
2753 } | 2753 } |
2754 | 2754 |
2755 // Overridden from KeyboardDelegate: | 2755 // Overridden from KeyboardDelegate: |
2756 void OnKeyboardDestroying(Keyboard* keyboard) override { delete this; } | 2756 void OnKeyboardDestroying(Keyboard* keyboard) override { delete this; } |
2757 bool CanAcceptKeyboardEventsForSurface(Surface* surface) const override { | 2757 bool CanAcceptKeyboardEventsForSurface(Surface* surface) const override { |
2758 wl_resource* surface_resource = GetSurfaceResource(surface); | 2758 wl_resource* surface_resource = GetSurfaceResource(surface); |
2759 // We can accept events for this surface if the client is the same as the | 2759 // We can accept events for this surface if the client is the same as the |
2760 // keyboard. | 2760 // keyboard. |
2761 return surface_resource && | 2761 return surface_resource && |
2762 wl_resource_get_client(surface_resource) == client(); | 2762 wl_resource_get_client(surface_resource) == client(); |
(...skipping 1193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3956 DCHECK(event_loop); | 3956 DCHECK(event_loop); |
3957 wl_event_loop_dispatch(event_loop, timeout.InMilliseconds()); | 3957 wl_event_loop_dispatch(event_loop, timeout.InMilliseconds()); |
3958 } | 3958 } |
3959 | 3959 |
3960 void Server::Flush() { | 3960 void Server::Flush() { |
3961 wl_display_flush_clients(wl_display_.get()); | 3961 wl_display_flush_clients(wl_display_.get()); |
3962 } | 3962 } |
3963 | 3963 |
3964 } // namespace wayland | 3964 } // namespace wayland |
3965 } // namespace exo | 3965 } // namespace exo |
OLD | NEW |