#pragma once #include "common.hpp" #include "components/x11/types.hpp" #include "components/x11/xlib.hpp" LEMONBUDDY_NS namespace xutils { static xcb_connection_t* g_connection_ptr = nullptr; inline xcb_connection_t* get_connection() { if (g_connection_ptr == nullptr) { Display* dsp; if ((dsp = xlib::get_display()) == nullptr) return nullptr; XSetEventQueueOwner(dsp, XCBOwnsEventQueue); g_connection_ptr = XGetXCBConnection(dsp); } return g_connection_ptr; } inline void pack_values(uint32_t mask, const uint32_t* src, uint32_t* dest) { for (; mask; mask >>= 1, src++) if (mask & 1) *dest++ = *src; } inline void pack_values(uint32_t mask, const xcb_params_cw_t* src, uint32_t* dest) { xutils::pack_values(mask, reinterpret_cast(src), dest); } inline void pack_values(uint32_t mask, const xcb_params_gc_t* src, uint32_t* dest) { xutils::pack_values(mask, reinterpret_cast(src), dest); } } LEMONBUDDY_NS_END