wip
Some checks failed
continuous-integration/drone/pr Build is failing

This commit is contained in:
light7734 2025-10-09 20:18:20 +03:30
parent 4ef760baa0
commit f7f6aa20ab
Signed by: light7734
GPG key ID: 8C30176798F1A6BA
3 changed files with 20 additions and 10 deletions

View file

@ -14,11 +14,13 @@
namespace lt::surface { namespace lt::surface {
template<int EventType> template<int EventType>
int XEventTypeEquals(Display *, XEvent *event, XPointer winptr) auto XEventTypeEquals(Display *display, XEvent *event, char *winptr) -> int
{ {
std::ignore = display;
return ( return (
event->type == EventType event->type == EventType
&& *(reinterpret_cast<Window *>(winptr)) == reinterpret_cast<XAnyEvent *>(event)->window && *(std::bit_cast<const Window *>(winptr))
== std::bit_cast<const XAnyEvent *>(event)->window
); );
} }
@ -100,7 +102,10 @@ void System::on_unregister()
{ {
} }
void System::create_surface_component(ecs::EntityId entity, SurfaceComponent::CreateInfo info) __attribute__((no_sanitize("memory"))) void System::create_surface_component(
ecs::EntityId entity,
SurfaceComponent::CreateInfo info
)
try try
{ {
auto &component = m_registry->add<SurfaceComponent>(entity, info); auto &component = m_registry->add<SurfaceComponent>(entity, info);
@ -331,7 +336,10 @@ void System::modify_title(SurfaceComponent &surface, const ModifyTitleRequest &r
XStoreName(display, window, request.title.c_str()); XStoreName(display, window, request.title.c_str());
} }
void System::modify_resolution(SurfaceComponent &surface, const ModifyResolutionRequest &request) __attribute__((no_sanitize("memory"))) void System::modify_resolution(
SurfaceComponent &surface,
const ModifyResolutionRequest &request
)
{ {
// surface.m_resolution = request.resolution; // surface.m_resolution = request.resolution;
@ -340,7 +348,7 @@ void System::modify_resolution(SurfaceComponent &surface, const ModifyResolution
// XResizeWindow(display, window, width, height); // XResizeWindow(display, window, width, height);
// get baseline serial number for X requests generated from XResizeWindow // get baseline serial number for X requests generated from XResizeWindow
uint64_t serial = NextRequest(display); auto serial = NextRequest(display);
// request a new window size from the X server // request a new window size from the X server
XResizeWindow(display, window, static_cast<uint32_t>(width), static_cast<uint32_t>(height)); XResizeWindow(display, window, static_cast<uint32_t>(width), static_cast<uint32_t>(height));
@ -396,7 +404,7 @@ void System::modify_position(SurfaceComponent &surface, const ModifyPositionRequ
const auto &[x, y] = request.position; const auto &[x, y] = request.position;
// get baseline serial number for X requests generated from XResizeWindow // get baseline serial number for X requests generated from XResizeWindow
uint64_t serial = NextRequest(display); auto serial = NextRequest(display);
XMoveWindow(display, window, static_cast<int>(x), static_cast<int>(y)); XMoveWindow(display, window, static_cast<int>(x), static_cast<int>(y));
// flush output queue and wait for X server to processes the request // flush output queue and wait for X server to processes the request

View file

@ -16,7 +16,6 @@ using test::expect_eq;
using test::expect_ne; using test::expect_ne;
using test::expect_not_nullptr; using test::expect_not_nullptr;
using test::expect_throw; using test::expect_throw;
using test::expect_true;
using test::Suite; using test::Suite;
[[nodiscard]] auto tick_info() -> app::TickInfo [[nodiscard]] auto tick_info() -> app::TickInfo

View file

@ -27,7 +27,10 @@ public:
void on_unregister() override; void on_unregister() override;
void create_surface_component(ecs::EntityId entity, SurfaceComponent::CreateInfo info); __attribute__((no_sanitize("memory"))) void create_surface_component(
ecs::EntityId entity,
SurfaceComponent::CreateInfo info
);
void tick(app::TickInfo tick) override; void tick(app::TickInfo tick) override;
@ -45,12 +48,12 @@ private:
void modify_title(struct SurfaceComponent &surface, const struct ModifyTitleRequest &request); void modify_title(struct SurfaceComponent &surface, const struct ModifyTitleRequest &request);
void modify_resolution( __attribute__((no_sanitize("memory"))) void modify_resolution(
struct SurfaceComponent &surface, struct SurfaceComponent &surface,
const struct ModifyResolutionRequest &request const struct ModifyResolutionRequest &request
); );
void modify_position( __attribute__((no_sanitize("memory"))) void modify_position(
struct SurfaceComponent &surface, struct SurfaceComponent &surface,
const struct ModifyPositionRequest &request const struct ModifyPositionRequest &request
); );