This commit is contained in:
parent
4ef760baa0
commit
f7f6aa20ab
3 changed files with 20 additions and 10 deletions
|
|
@ -14,11 +14,13 @@
|
|||
namespace lt::surface {
|
||||
|
||||
template<int EventType>
|
||||
int XEventTypeEquals(Display *, XEvent *event, XPointer winptr)
|
||||
auto XEventTypeEquals(Display *display, XEvent *event, char *winptr) -> int
|
||||
{
|
||||
std::ignore = display;
|
||||
return (
|
||||
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
|
||||
{
|
||||
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());
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
|
|
@ -340,7 +348,7 @@ void System::modify_resolution(SurfaceComponent &surface, const ModifyResolution
|
|||
// XResizeWindow(display, window, width, height);
|
||||
|
||||
// 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
|
||||
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;
|
||||
|
||||
// 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));
|
||||
|
||||
// flush output queue and wait for X server to processes the request
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ using test::expect_eq;
|
|||
using test::expect_ne;
|
||||
using test::expect_not_nullptr;
|
||||
using test::expect_throw;
|
||||
using test::expect_true;
|
||||
using test::Suite;
|
||||
|
||||
[[nodiscard]] auto tick_info() -> app::TickInfo
|
||||
|
|
|
|||
|
|
@ -27,7 +27,10 @@ public:
|
|||
|
||||
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;
|
||||
|
||||
|
|
@ -45,12 +48,12 @@ private:
|
|||
|
||||
void modify_title(struct SurfaceComponent &surface, const struct ModifyTitleRequest &request);
|
||||
|
||||
void modify_resolution(
|
||||
__attribute__((no_sanitize("memory"))) void modify_resolution(
|
||||
struct SurfaceComponent &surface,
|
||||
const struct ModifyResolutionRequest &request
|
||||
);
|
||||
|
||||
void modify_position(
|
||||
__attribute__((no_sanitize("memory"))) void modify_position(
|
||||
struct SurfaceComponent &surface,
|
||||
const struct ModifyPositionRequest &request
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue