73
src/wl/Subsurface.cppm
Normal file
73
src/wl/Subsurface.cppm
Normal file
@@ -0,0 +1,73 @@
|
||||
module;
|
||||
|
||||
#include "util.h"
|
||||
|
||||
#include <stdexcept>
|
||||
|
||||
#include <wayland-server.h>
|
||||
|
||||
export module LunarWM.wl.Subsurface;
|
||||
|
||||
namespace LunarWM {
|
||||
|
||||
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 LunarWM
|
||||
Reference in New Issue
Block a user