diff options
Diffstat (limited to 'chromium/gpu/vulkan/x')
-rw-r--r-- | chromium/gpu/vulkan/x/vulkan_implementation_x11.cc | 5 | ||||
-rw-r--r-- | chromium/gpu/vulkan/x/vulkan_surface_x11.cc | 53 | ||||
-rw-r--r-- | chromium/gpu/vulkan/x/vulkan_surface_x11.h | 15 |
3 files changed, 41 insertions, 32 deletions
diff --git a/chromium/gpu/vulkan/x/vulkan_implementation_x11.cc b/chromium/gpu/vulkan/x/vulkan_implementation_x11.cc index 6e8f4cdeaf0..ec752c329d4 100644 --- a/chromium/gpu/vulkan/x/vulkan_implementation_x11.cc +++ b/chromium/gpu/vulkan/x/vulkan_implementation_x11.cc @@ -77,7 +77,7 @@ VulkanImplementationX11::VulkanImplementationX11(bool use_swiftshader) gfx::GetXDisplay(); } -VulkanImplementationX11::~VulkanImplementationX11() {} +VulkanImplementationX11::~VulkanImplementationX11() = default; bool VulkanImplementationX11::InitializeVulkanInstance(bool using_surface) { if (using_surface && !use_swiftshader() && !IsVulkanSurfaceSupported()) @@ -126,7 +126,8 @@ std::unique_ptr<VulkanSurface> VulkanImplementationX11::CreateViewSurface( gfx::AcceleratedWidget window) { if (!using_surface_) return nullptr; - return VulkanSurfaceX11::Create(vulkan_instance_.vk_instance(), window); + return VulkanSurfaceX11::Create(vulkan_instance_.vk_instance(), + static_cast<x11::Window>(window)); } bool VulkanImplementationX11::GetPhysicalDevicePresentationSupport( diff --git a/chromium/gpu/vulkan/x/vulkan_surface_x11.cc b/chromium/gpu/vulkan/x/vulkan_surface_x11.cc index 3bb675440cf..592a574a99e 100644 --- a/chromium/gpu/vulkan/x/vulkan_surface_x11.cc +++ b/chromium/gpu/vulkan/x/vulkan_surface_x11.cc @@ -7,6 +7,7 @@ #include "base/logging.h" #include "gpu/vulkan/vulkan_function_pointers.h" #include "ui/events/platform/x11/x11_event_source.h" +#include "ui/gfx/native_widget_types.h" namespace gpu { @@ -14,7 +15,8 @@ class VulkanSurfaceX11::ExposeEventForwarder : public ui::XEventDispatcher { public: explicit ExposeEventForwarder(VulkanSurfaceX11* surface) : surface_(surface) { if (auto* event_source = ui::X11EventSource::GetInstance()) { - XSelectInput(gfx::GetXDisplay(), surface_->window_, ExposureMask); + XSelectInput(gfx::GetXDisplay(), static_cast<uint32_t>(surface_->window_), + ExposureMask); event_source->AddXEventDispatcher(this); } } @@ -25,7 +27,7 @@ class VulkanSurfaceX11::ExposeEventForwarder : public ui::XEventDispatcher { } // ui::XEventDispatcher: - bool DispatchXEvent(XEvent* xevent) override { + bool DispatchXEvent(x11::Event* xevent) override { if (!surface_->CanDispatchXEvent(xevent)) return false; surface_->ForwardXExposeEvent(xevent); @@ -40,17 +42,19 @@ class VulkanSurfaceX11::ExposeEventForwarder : public ui::XEventDispatcher { // static std::unique_ptr<VulkanSurfaceX11> VulkanSurfaceX11::Create( VkInstance vk_instance, - Window parent_window) { + x11::Window parent_window) { XDisplay* display = gfx::GetXDisplay(); XWindowAttributes attributes; - if (!XGetWindowAttributes(display, parent_window, &attributes)) { - LOG(ERROR) << "XGetWindowAttributes failed for window " << parent_window - << "."; + if (!XGetWindowAttributes(display, static_cast<uint32_t>(parent_window), + &attributes)) { + LOG(ERROR) << "XGetWindowAttributes failed for window " + << static_cast<uint32_t>(parent_window) << "."; return nullptr; } - Window window = XCreateWindow(display, parent_window, 0, 0, attributes.width, - attributes.height, 0, CopyFromParent, - InputOutput, CopyFromParent, 0, nullptr); + Window window = XCreateWindow( + display, static_cast<uint32_t>(parent_window), 0, 0, attributes.width, + attributes.height, 0, static_cast<int>(x11::WindowClass::CopyFromParent), + static_cast<int>(x11::WindowClass::InputOutput), nullptr, 0, nullptr); if (!window) { LOG(ERROR) << "XCreateWindow failed."; return nullptr; @@ -68,42 +72,45 @@ std::unique_ptr<VulkanSurfaceX11> VulkanSurfaceX11::Create( DLOG(ERROR) << "vkCreateXlibSurfaceKHR() failed: " << result; return nullptr; } - return std::make_unique<VulkanSurfaceX11>(vk_instance, vk_surface, - parent_window, window); + return std::make_unique<VulkanSurfaceX11>( + vk_instance, vk_surface, parent_window, static_cast<x11::Window>(window)); } VulkanSurfaceX11::VulkanSurfaceX11(VkInstance vk_instance, VkSurfaceKHR vk_surface, - Window parent_window, - Window window) + x11::Window parent_window, + x11::Window window) : VulkanSurface(vk_instance, - window, + static_cast<gfx::AcceleratedWidget>(window), vk_surface, false /* use_protected_memory */), parent_window_(parent_window), window_(window), expose_event_forwarder_(new ExposeEventForwarder(this)) {} -VulkanSurfaceX11::~VulkanSurfaceX11() {} +VulkanSurfaceX11::~VulkanSurfaceX11() = default; // VulkanSurface: bool VulkanSurfaceX11::Reshape(const gfx::Size& size, gfx::OverlayTransform pre_transform) { DCHECK_EQ(pre_transform, gfx::OVERLAY_TRANSFORM_NONE); - XResizeWindow(gfx::GetXDisplay(), window_, size.width(), size.height()); + XResizeWindow(gfx::GetXDisplay(), static_cast<uint32_t>(window_), + size.width(), size.height()); return VulkanSurface::Reshape(size, pre_transform); } -bool VulkanSurfaceX11::CanDispatchXEvent(const XEvent* event) { - return event->type == Expose && event->xexpose.window == window_; +bool VulkanSurfaceX11::CanDispatchXEvent(const x11::Event* x11_event) { + const XEvent* event = &x11_event->xlib_event(); + return event->type == Expose && + event->xexpose.window == static_cast<uint32_t>(window_); } -void VulkanSurfaceX11::ForwardXExposeEvent(const XEvent* event) { - XEvent forwarded_event = *event; - forwarded_event.xexpose.window = parent_window_; - XSendEvent(gfx::GetXDisplay(), parent_window_, False, ExposureMask, - &forwarded_event); +void VulkanSurfaceX11::ForwardXExposeEvent(const x11::Event* event) { + XEvent forwarded_event = event->xlib_event(); + forwarded_event.xexpose.window = static_cast<uint32_t>(parent_window_); + XSendEvent(gfx::GetXDisplay(), static_cast<uint32_t>(parent_window_), False, + ExposureMask, &forwarded_event); XFlush(gfx::GetXDisplay()); } diff --git a/chromium/gpu/vulkan/x/vulkan_surface_x11.h b/chromium/gpu/vulkan/x/vulkan_surface_x11.h index 5c99d6ea907..585fe197d26 100644 --- a/chromium/gpu/vulkan/x/vulkan_surface_x11.h +++ b/chromium/gpu/vulkan/x/vulkan_surface_x11.h @@ -9,6 +9,7 @@ #include "base/macros.h" #include "gpu/vulkan/vulkan_surface.h" +#include "ui/gfx/x/event.h" #include "ui/gfx/x/x11_types.h" namespace gpu { @@ -16,11 +17,11 @@ namespace gpu { class VulkanSurfaceX11 : public VulkanSurface { public: static std::unique_ptr<VulkanSurfaceX11> Create(VkInstance vk_instance, - Window parent_window); + x11::Window parent_window); VulkanSurfaceX11(VkInstance vk_instance, VkSurfaceKHR vk_surface, - Window parent_window, - Window window); + x11::Window parent_window, + x11::Window window); ~VulkanSurfaceX11() override; // VulkanSurface: @@ -29,11 +30,11 @@ class VulkanSurfaceX11 : public VulkanSurface { private: class ExposeEventForwarder; - bool CanDispatchXEvent(const XEvent* event); - void ForwardXExposeEvent(const XEvent* event); + bool CanDispatchXEvent(const x11::Event* event); + void ForwardXExposeEvent(const x11::Event* event); - const Window parent_window_; - const Window window_; + const x11::Window parent_window_; + const x11::Window window_; std::unique_ptr<ExposeEventForwarder> expose_event_forwarder_; DISALLOW_COPY_AND_ASSIGN(VulkanSurfaceX11); |