Files
lunarwm/src/wl/Subsurface.cppm
Slendi 2e38196ea5 import std
Signed-off-by: Slendi <slendi@socopon.com>
2025-07-05 03:17:42 +03:00

78 lines
1.8 KiB
C++

module;
#include "util.h"
#include <wayland-server.h>
export module LunarWM.wl.Subsurface;
import std;
namespace LunarWM {
namespace wl {
export struct Subsurface {
Subsurface() = delete;
static Subsurface *make(wl_client *client, uint32_t version, uint32_t id);
static void destroy(wl_resource *res);
struct wl_resource *resource;
};
void set_position(wl_client *client, wl_resource *resource, int32_t x,
int32_t y) {
// TODO: Implement.
}
void place_above(wl_client *client, wl_resource *resource,
wl_resource *sibling_resource) {
// TODO: Implement.
}
void place_below(wl_client *client, wl_resource *resource,
wl_resource *sibling_resource) {
// TODO: Implement.
}
void set_sync(wl_client *client, wl_resource *resource) {
// TODO: Implement.
}
void set_desync(wl_client *client, wl_resource *resource) {
// TODO: Implement.
}
struct wl_subsurface_interface const subsurface_impl{
.destroy = resource_destroy,
.set_position = set_position,
.place_above = place_above,
.place_below = place_below,
.set_sync = set_sync,
.set_desync = set_desync,
};
void Subsurface::destroy(wl_resource *res) {
free(wl_resource_get_user_data(res));
}
Subsurface *Subsurface::make(wl_client *client, uint32_t version, uint32_t id) {
Subsurface *subsurface =
reinterpret_cast<Subsurface *>(malloc(sizeof(Subsurface)));
subsurface->resource =
wl_resource_create(client, &wl_subsurface_interface, version, id);
if (!subsurface->resource) {
free(subsurface);
throw std::runtime_error("wl_resource_create(subsurface) failed");
}
wl_resource_set_implementation(subsurface->resource, &subsurface_impl,
subsurface, &Subsurface::destroy);
return subsurface;
}
} // namespace wl
} // namespace LunarWM