78 lines
1.8 KiB
C++
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
|