diff --git a/xbanan/Base.cpp b/xbanan/Base.cpp index b867f20..fbd19d0 100644 --- a/xbanan/Base.cpp +++ b/xbanan/Base.cpp @@ -2052,8 +2052,7 @@ BAN::ErrorOr handle_packet(Client& client_info, BAN::ConstByteSpan packet) .depth = request.depth, .width = request.width, .height = request.height, - .data = data.span(), - .owned_data = BAN::move(data), + .data = BAN::move(data), } })) )); diff --git a/xbanan/Definitions.h b/xbanan/Definitions.h index 6af8b3a..bb7de9f 100644 --- a/xbanan/Definitions.h +++ b/xbanan/Definitions.h @@ -81,8 +81,7 @@ struct Object CARD8 depth; CARD32 width; CARD32 height; - BAN::ByteSpan data; - BAN::Vector owned_data; + BAN::Vector data; }; struct GraphicsContext diff --git a/xbanan/ExtSHM.cpp b/xbanan/ExtSHM.cpp index 721d2a0..01e3253 100644 --- a/xbanan/ExtSHM.cpp +++ b/xbanan/ExtSHM.cpp @@ -7,42 +7,13 @@ #include #include -#include #include -#include #include static BYTE s_shm_event_base; static BYTE s_shm_error_base; static BYTE s_shm_major_opcode; -static bool is_local_socket(int socket) -{ - sockaddr_storage addr; - socklen_t addr_len = sizeof(addr); - if (getpeername(socket, reinterpret_cast(&addr), &addr_len) == -1) - return false; - - switch (addr.ss_family) - { - case AF_UNIX: - return true; - case AF_INET: - { - const auto* addr_in = reinterpret_cast(&addr); - const auto ipv4 = ntohl(addr_in->sin_addr.s_addr); - return (ipv4 & IN_CLASSA_NET) == IN_LOOPBACKNET; - } - case AF_INET6: - { - const auto* addr_in6 = reinterpret_cast(&addr); - return IN6_IS_ADDR_LOOPBACK(&addr_in6->sin6_addr); - } - } - - return false; -} - static BAN::ErrorOr get_shmseg(Client& client_info, CARD32 shmseg, BYTE op_major, BYTE op_minor) { auto it = g_objects.find(shmseg); @@ -78,7 +49,7 @@ static BAN::ErrorOr extension_shm(Client& client_info, BAN::ConstByteSpan xShmQueryVersionReply reply { .type = X_Reply, - .sharedPixmaps = is_local_socket(client_info.fd), + .sharedPixmaps = false, .sequenceNumber = client_info.sequence, .length = 0, .majorVersion = 1, @@ -265,40 +236,6 @@ static BAN::ErrorOr extension_shm(Client& client_info, BAN::ConstByteSpan break; } - case X_ShmCreatePixmap: - { - auto request = decode(packet).value(); - - dprintln("ShmCreatePixmap"); - dprintln(" depth: {}", request.depth); - dprintln(" pid: {}", request.pid); - dprintln(" drawable: {}", request.drawable); - dprintln(" width: {}", request.width); - dprintln(" height: {}", request.height); - dprintln(" shmseg: {}", request.shmseg); - dprintln(" offset: {}", request.offset); - - ASSERT(request.depth == 24 || request.depth == 32); - - void* shm_segment = TRY(get_shmseg(client_info, request.shmseg, op_major, op_minor)); - - TRY(client_info.objects.insert(request.pid)); - TRY(g_objects.insert( - request.pid, - TRY(BAN::UniqPtr::create(Object { - .type = Object::Type::Pixmap, - .object = Object::Pixmap { - .depth = request.depth, - .width = request.width, - .height = request.height, - .data = BAN::ByteSpan(static_cast(shm_segment) + request.offset, request.width * request.height * 4), - .owned_data = {}, - } - })) - )); - - break; - } default: dwarnln("unsupported shm minor opcode {}", packet[1]); break;