aboutsummaryrefslogtreecommitdiff
path: root/examples/compositor/wl_shell.c
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-08-09 17:30:51 -0400
committerGitHub <noreply@github.com>2017-08-09 17:30:51 -0400
commit3ce1341e3c0276ef20df5c7b89cc9ce260d05b9e (patch)
tree76b53d12dde6ec82f989a1a7bd72146058189374 /examples/compositor/wl_shell.c
parentdf378d32740495d33dc46e799a547adc9b9620e1 (diff)
parentbd2e9a7168dc530c03b7b45ecfdd5ce0aff0ddb8 (diff)
Merge pull request #43 from acrisci/feature/shell-surface-interface
shell surface interface
Diffstat (limited to 'examples/compositor/wl_shell.c')
-rw-r--r--examples/compositor/wl_shell.c89
1 files changed, 86 insertions, 3 deletions
diff --git a/examples/compositor/wl_shell.c b/examples/compositor/wl_shell.c
index f2ec3c56..e56f5c9e 100644
--- a/examples/compositor/wl_shell.c
+++ b/examples/compositor/wl_shell.c
@@ -1,12 +1,95 @@
#include <assert.h>
#include <wayland-server.h>
#include <wlr/util/log.h>
+#include <stdlib.h>
#include "compositor.h"
+static void shell_surface_pong(struct wl_client *client, struct wl_resource
+ *resource, uint32_t serial) {
+ wlr_log(L_DEBUG, "TODO: implement shell surface pong");
+}
+
+static void shell_surface_move(struct wl_client *client, struct wl_resource
+ *resource, struct wl_resource *seat, uint32_t serial) {
+ wlr_log(L_DEBUG, "TODO: implement shell surface move");
+}
+
+static void shell_surface_resize(struct wl_client *client,
+ struct wl_resource *resource, struct wl_resource *seat, uint32_t serial,
+ uint32_t edges) {
+ wlr_log(L_DEBUG, "TODO: implement shell surface resize");
+}
+
+static void shell_surface_set_toplevel(struct wl_client *client,
+ struct wl_resource *resource) {
+ wlr_log(L_DEBUG, "TODO: implement shell surface set_toplevel");
+}
+
+static void shell_surface_set_transient(struct wl_client *client,
+ struct wl_resource *resource, struct wl_resource *parent, int32_t x,
+ int32_t y, uint32_t flags) {
+ wlr_log(L_DEBUG, "TODO: implement shell surface set_transient");
+}
+
+static void shell_surface_set_fullscreen(struct wl_client *client,
+ struct wl_resource *resource, uint32_t method, uint32_t framerate,
+ struct wl_resource *output) {
+ wlr_log(L_DEBUG, "TODO: implement shell surface set_fullscreen");
+}
+
+static void shell_surface_set_popup(struct wl_client *client,
+ struct wl_resource *resource, struct wl_resource *seat, uint32_t serial,
+ struct wl_resource *parent, int32_t x, int32_t y, uint32_t flags) {
+ wlr_log(L_DEBUG, "TODO: implement shell surface set_popup");
+}
+
+static void shell_surface_set_maximized(struct wl_client *client,
+ struct wl_resource *resource, struct wl_resource *output) {
+ wlr_log(L_DEBUG, "TODO: implement shell surface set_maximized");
+}
+
+static void shell_surface_set_title(struct wl_client *client,
+ struct wl_resource *resource, const char *title) {
+ wlr_log(L_DEBUG, "TODO: implement shell surface set_title");
+}
+
+static void shell_surface_set_class(struct wl_client *client,
+ struct wl_resource *resource, const char *class_) {
+ wlr_log(L_DEBUG, "TODO: implement shell surface set_class");
+}
+
+struct wl_shell_surface_interface shell_surface_interface = {
+ .pong = shell_surface_pong,
+ .move = shell_surface_move,
+ .resize = shell_surface_resize,
+ .set_toplevel = shell_surface_set_toplevel,
+ .set_transient = shell_surface_set_transient,
+ .set_fullscreen = shell_surface_set_fullscreen,
+ .set_popup = shell_surface_set_popup,
+ .set_maximized = shell_surface_set_maximized,
+ .set_title = shell_surface_set_title,
+ .set_class = shell_surface_set_class,
+};
+
+struct shell_surface_state {
+ struct wlr_texture *wlr_texture;
+};
+
+static void destroy_shell_surface(struct wl_resource *resource) {
+ struct shell_surface_state *state = wl_resource_get_user_data(resource);
+ free(state);
+}
+
void wl_shell_get_shell_surface(struct wl_client *client,
- struct wl_resource *resource, uint32_t id,
- struct wl_resource *surface) {
- wlr_log(L_DEBUG, "TODO: implement get_shell_surface");
+ struct wl_resource *resource, uint32_t id,
+ struct wl_resource *surface) {
+ struct wlr_texture *wlr_texture = wl_resource_get_user_data(surface);
+ struct shell_surface_state *state = malloc(sizeof(struct shell_surface_state));
+ state->wlr_texture = wlr_texture;
+ struct wl_resource *shell_surface_resource = wl_resource_create(client,
+ &wl_shell_surface_interface, wl_resource_get_version(resource), id);
+ wl_resource_set_implementation(shell_surface_resource,
+ &shell_surface_interface, state, destroy_shell_surface);
}
static struct wl_shell_interface wl_shell_impl = {