| // Copyright 2021 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // This file was automatically generated with: |
| // ../../ui/gfx/x/gen_xproto.py \ |
| // ../../third_party/xcbproto/src \ |
| // gen/ui/gfx/x \ |
| // bigreq \ |
| // composite \ |
| // damage \ |
| // dpms \ |
| // dri2 \ |
| // dri3 \ |
| // ge \ |
| // glx \ |
| // present \ |
| // randr \ |
| // record \ |
| // render \ |
| // res \ |
| // screensaver \ |
| // shape \ |
| // shm \ |
| // sync \ |
| // xc_misc \ |
| // xevie \ |
| // xf86dri \ |
| // xf86vidmode \ |
| // xfixes \ |
| // xinerama \ |
| // xinput \ |
| // xkb \ |
| // xprint \ |
| // xproto \ |
| // xselinux \ |
| // xtest \ |
| // xv \ |
| // xvmc |
| |
| #ifndef UI_GFX_X_GENERATED_PROTOS_RECORD_H_ |
| #define UI_GFX_X_GENERATED_PROTOS_RECORD_H_ |
| |
| #include <array> |
| #include <cstddef> |
| #include <cstdint> |
| #include <cstring> |
| #include <vector> |
| |
| #include "base/component_export.h" |
| #include "base/files/scoped_file.h" |
| #include "base/memory/ref_counted_memory.h" |
| #include "base/memory/scoped_refptr.h" |
| #include "third_party/abseil-cpp/absl/types/optional.h" |
| #include "ui/gfx/x/error.h" |
| #include "ui/gfx/x/ref_counted_fd.h" |
| #include "xproto.h" |
| |
| namespace x11 { |
| |
| class Connection; |
| |
| template <typename Reply> |
| struct Response; |
| |
| template <typename Reply> |
| class Future; |
| |
| class COMPONENT_EXPORT(X11) Record { |
| public: |
| static constexpr unsigned major_version = 1; |
| static constexpr unsigned minor_version = 13; |
| |
| Record(Connection* connection, const x11::QueryExtensionReply& info); |
| |
| uint8_t present() const { return info_.present; } |
| uint8_t major_opcode() const { return info_.major_opcode; } |
| uint8_t first_event() const { return info_.first_event; } |
| uint8_t first_error() const { return info_.first_error; } |
| |
| Connection* connection() const { return connection_; } |
| |
| enum class Context : uint32_t {}; |
| |
| enum class ElementHeader : uint8_t {}; |
| |
| enum class HType : int { |
| FromServerTime = 1 << 0, |
| FromClientTime = 1 << 1, |
| FromClientSequence = 1 << 2, |
| }; |
| |
| enum class ClientSpec : uint32_t { |
| CurrentClients = 1, |
| FutureClients = 2, |
| AllClients = 3, |
| }; |
| |
| struct Range8 { |
| uint8_t first{}; |
| uint8_t last{}; |
| }; |
| |
| struct Range16 { |
| uint16_t first{}; |
| uint16_t last{}; |
| }; |
| |
| struct ExtRange { |
| Range8 major{}; |
| Range16 minor{}; |
| }; |
| |
| struct Range { |
| Range8 core_requests{}; |
| Range8 core_replies{}; |
| ExtRange ext_requests{}; |
| ExtRange ext_replies{}; |
| Range8 delivered_events{}; |
| Range8 device_events{}; |
| Range8 errors{}; |
| uint8_t client_started{}; |
| uint8_t client_died{}; |
| }; |
| |
| struct ClientInfo { |
| ClientSpec client_resource{}; |
| std::vector<Range> ranges{}; |
| }; |
| |
| struct BadContextError : public x11::Error { |
| uint16_t sequence{}; |
| uint32_t invalid_record{}; |
| |
| std::string ToString() const override; |
| }; |
| |
| struct QueryVersionRequest { |
| uint16_t major_version{}; |
| uint16_t minor_version{}; |
| }; |
| |
| struct QueryVersionReply { |
| uint16_t sequence{}; |
| uint16_t major_version{}; |
| uint16_t minor_version{}; |
| }; |
| |
| using QueryVersionResponse = Response<QueryVersionReply>; |
| |
| Future<QueryVersionReply> QueryVersion(const QueryVersionRequest& request); |
| |
| Future<QueryVersionReply> QueryVersion(const uint16_t& major_version = {}, |
| const uint16_t& minor_version = {}); |
| |
| struct CreateContextRequest { |
| Context context{}; |
| ElementHeader element_header{}; |
| std::vector<ClientSpec> client_specs{}; |
| std::vector<Range> ranges{}; |
| }; |
| |
| using CreateContextResponse = Response<void>; |
| |
| Future<void> CreateContext(const CreateContextRequest& request); |
| |
| Future<void> CreateContext(const Context& context = {}, |
| const ElementHeader& element_header = {}, |
| const std::vector<ClientSpec>& client_specs = {}, |
| const std::vector<Range>& ranges = {}); |
| |
| struct RegisterClientsRequest { |
| Context context{}; |
| ElementHeader element_header{}; |
| std::vector<ClientSpec> client_specs{}; |
| std::vector<Range> ranges{}; |
| }; |
| |
| using RegisterClientsResponse = Response<void>; |
| |
| Future<void> RegisterClients(const RegisterClientsRequest& request); |
| |
| Future<void> RegisterClients(const Context& context = {}, |
| const ElementHeader& element_header = {}, |
| const std::vector<ClientSpec>& client_specs = {}, |
| const std::vector<Range>& ranges = {}); |
| |
| struct UnregisterClientsRequest { |
| Context context{}; |
| std::vector<ClientSpec> client_specs{}; |
| }; |
| |
| using UnregisterClientsResponse = Response<void>; |
| |
| Future<void> UnregisterClients(const UnregisterClientsRequest& request); |
| |
| Future<void> UnregisterClients( |
| const Context& context = {}, |
| const std::vector<ClientSpec>& client_specs = {}); |
| |
| struct GetContextRequest { |
| Context context{}; |
| }; |
| |
| struct GetContextReply { |
| uint8_t enabled{}; |
| uint16_t sequence{}; |
| ElementHeader element_header{}; |
| std::vector<ClientInfo> intercepted_clients{}; |
| }; |
| |
| using GetContextResponse = Response<GetContextReply>; |
| |
| Future<GetContextReply> GetContext(const GetContextRequest& request); |
| |
| Future<GetContextReply> GetContext(const Context& context = {}); |
| |
| struct EnableContextRequest { |
| Context context{}; |
| }; |
| |
| struct EnableContextReply { |
| uint8_t category{}; |
| uint16_t sequence{}; |
| ElementHeader element_header{}; |
| uint8_t client_swapped{}; |
| uint32_t xid_base{}; |
| uint32_t server_time{}; |
| uint32_t rec_sequence_num{}; |
| std::vector<uint8_t> data{}; |
| }; |
| |
| using EnableContextResponse = Response<EnableContextReply>; |
| |
| Future<EnableContextReply> EnableContext(const EnableContextRequest& request); |
| |
| Future<EnableContextReply> EnableContext(const Context& context = {}); |
| |
| struct DisableContextRequest { |
| Context context{}; |
| }; |
| |
| using DisableContextResponse = Response<void>; |
| |
| Future<void> DisableContext(const DisableContextRequest& request); |
| |
| Future<void> DisableContext(const Context& context = {}); |
| |
| struct FreeContextRequest { |
| Context context{}; |
| }; |
| |
| using FreeContextResponse = Response<void>; |
| |
| Future<void> FreeContext(const FreeContextRequest& request); |
| |
| Future<void> FreeContext(const Context& context = {}); |
| |
| private: |
| Connection* const connection_; |
| x11::QueryExtensionReply info_{}; |
| }; |
| |
| } // namespace x11 |
| |
| inline constexpr x11::Record::HType operator|(x11::Record::HType l, |
| x11::Record::HType r) { |
| using T = std::underlying_type_t<x11::Record::HType>; |
| return static_cast<x11::Record::HType>(static_cast<T>(l) | static_cast<T>(r)); |
| } |
| |
| inline constexpr x11::Record::HType operator&(x11::Record::HType l, |
| x11::Record::HType r) { |
| using T = std::underlying_type_t<x11::Record::HType>; |
| return static_cast<x11::Record::HType>(static_cast<T>(l) & static_cast<T>(r)); |
| } |
| |
| inline constexpr x11::Record::ClientSpec operator|(x11::Record::ClientSpec l, |
| x11::Record::ClientSpec r) { |
| using T = std::underlying_type_t<x11::Record::ClientSpec>; |
| return static_cast<x11::Record::ClientSpec>(static_cast<T>(l) | |
| static_cast<T>(r)); |
| } |
| |
| inline constexpr x11::Record::ClientSpec operator&(x11::Record::ClientSpec l, |
| x11::Record::ClientSpec r) { |
| using T = std::underlying_type_t<x11::Record::ClientSpec>; |
| return static_cast<x11::Record::ClientSpec>(static_cast<T>(l) & |
| static_cast<T>(r)); |
| } |
| |
| #endif // UI_GFX_X_GENERATED_PROTOS_RECORD_H_ |