aboutsummaryrefslogtreecommitdiff
path: root/include/rootston
diff options
context:
space:
mode:
authorTony Crisci <tony@dubstepdish.com>2018-03-27 23:37:37 -0400
committerGitHub <noreply@github.com>2018-03-27 23:37:37 -0400
commit48e8202883594091d2ec2b5d0d8a55ddf2f0aea6 (patch)
treedb15d3d40ac5d0ec3117920f9b4917a0d0519175 /include/rootston
parent575bc81d54f98841c28718b1667d27acc136a48a (diff)
parent7d89e7e58dc6d3a2d40baf91ae3f5aaa87d58a8b (diff)
Merge pull request #731 from swaywm/layer-surfaces
Implement wlr-layer-shell protocol & rendering
Diffstat (limited to 'include/rootston')
-rw-r--r--include/rootston/desktop.h5
-rw-r--r--include/rootston/layers.h25
-rw-r--r--include/rootston/output.h8
-rw-r--r--include/rootston/view.h1
4 files changed, 38 insertions, 1 deletions
diff --git a/include/rootston/desktop.h b/include/rootston/desktop.h
index 5986c96f..5714aa0a 100644
--- a/include/rootston/desktop.h
+++ b/include/rootston/desktop.h
@@ -7,6 +7,7 @@
#include <wlr/types/wlr_compositor.h>
#include <wlr/types/wlr_gamma_control.h>
#include <wlr/types/wlr_idle.h>
+#include <wlr/types/wlr_layer_shell.h>
#include <wlr/types/wlr_linux_dmabuf.h>
#include <wlr/types/wlr_list.h>
#include <wlr/types/wlr_output_layout.h>
@@ -48,12 +49,14 @@ struct roots_desktop {
struct wlr_idle *idle;
struct wlr_idle_inhibit_manager_v1 *idle_inhibit;
struct wlr_linux_dmabuf *linux_dmabuf;
+ struct wlr_layer_shell *layer_shell;
struct wl_listener new_output;
struct wl_listener layout_change;
struct wl_listener xdg_shell_v6_surface;
struct wl_listener xdg_shell_surface;
struct wl_listener wl_shell_surface;
+ struct wl_listener layer_shell_surface;
struct wl_listener decoration_new;
#ifdef WLR_HAS_XWAYLAND
@@ -83,10 +86,12 @@ void view_update_size(struct roots_view *view, uint32_t width, uint32_t height);
void view_initial_focus(struct roots_view *view);
void view_map(struct roots_view *view, struct wlr_surface *surface);
void view_unmap(struct roots_view *view);
+void view_arrange_maximized(struct roots_view *view);
void handle_xdg_shell_v6_surface(struct wl_listener *listener, void *data);
void handle_xdg_shell_surface(struct wl_listener *listener, void *data);
void handle_wl_shell_surface(struct wl_listener *listener, void *data);
+void handle_layer_shell_surface(struct wl_listener *listener, void *data);
void handle_xwayland_surface(struct wl_listener *listener, void *data);
#endif
diff --git a/include/rootston/layers.h b/include/rootston/layers.h
new file mode 100644
index 00000000..35f5399e
--- /dev/null
+++ b/include/rootston/layers.h
@@ -0,0 +1,25 @@
+#ifndef ROOTSTON_LAYERS_H
+#define ROOTSTON_LAYERS_H
+#include <stdbool.h>
+#include <wlr/config.h>
+#include <wlr/types/wlr_box.h>
+#include <wlr/types/wlr_surface.h>
+#include <wlr/types/wlr_layer_shell.h>
+
+struct roots_layer_surface {
+ struct wlr_layer_surface *layer_surface;
+ struct wl_list link;
+
+ struct wl_listener destroy;
+ struct wl_listener map;
+ struct wl_listener unmap;
+ struct wl_listener surface_commit;
+ struct wl_listener output_destroy;
+ struct wl_listener output_mode;
+ struct wl_listener output_transform;
+
+ bool configured;
+ struct wlr_box geo;
+};
+
+#endif
diff --git a/include/rootston/output.h b/include/rootston/output.h
index a852a204..e40ad776 100644
--- a/include/rootston/output.h
+++ b/include/rootston/output.h
@@ -4,6 +4,7 @@
#include <pixman.h>
#include <time.h>
#include <wayland-server.h>
+#include <wlr/types/wlr_box.h>
#include <wlr/types/wlr_output_damage.h>
struct roots_desktop;
@@ -14,10 +15,13 @@ struct roots_output {
struct wl_list link; // roots_desktop:outputs
struct roots_view *fullscreen_view;
+ struct wl_list layers[4]; // layer_surface::link
struct timespec last_frame;
struct wlr_output_damage *damage;
+ struct wlr_box usable_area;
+
struct wl_listener destroy;
struct wl_listener damage_frame;
struct wl_listener damage_destroy;
@@ -35,5 +39,9 @@ void output_damage_from_view(struct roots_output *output,
struct roots_view *view);
void output_damage_whole_drag_icon(struct roots_output *output,
struct roots_drag_icon *icon);
+void output_damage_from_local_surface(struct roots_output *output,
+ struct wlr_surface *surface, double ox, double oy, float rotation);
+void output_damage_whole_local_surface(struct roots_output *output,
+ struct wlr_surface *surface, double ox, double oy, float rotation);
#endif
diff --git a/include/rootston/view.h b/include/rootston/view.h
index 1397a8d2..6e746e8c 100644
--- a/include/rootston/view.h
+++ b/include/rootston/view.h
@@ -1,6 +1,5 @@
#ifndef ROOTSTON_VIEW_H
#define ROOTSTON_VIEW_H
-
#include <stdbool.h>
#include <wlr/config.h>
#include <wlr/types/wlr_box.h>