From b6d7c3ed8ec6ae29af5d585db5417394ff49f3c7 Mon Sep 17 00:00:00 2001
From: Drew DeVault <sir@cmpwn.com>
Date: Sat, 23 Sep 2017 00:29:53 -0400
Subject: Initialize display, backend; add frame handling

---
 include/backend/wayland.h  |  2 ++
 include/rootston/desktop.h | 27 ++++++++++++++++++++++-----
 include/rootston/server.h  |  9 ++++++---
 3 files changed, 30 insertions(+), 8 deletions(-)

(limited to 'include')

diff --git a/include/backend/wayland.h b/include/backend/wayland.h
index 5e278dc9..42739c18 100644
--- a/include/backend/wayland.h
+++ b/include/backend/wayland.h
@@ -1,6 +1,7 @@
 #ifndef _WLR_INTERNAL_BACKEND_WAYLAND_H
 #define _WLR_INTERNAL_BACKEND_WAYLAND_H
 
+#include <stdbool.h>
 #include <wayland-client.h>
 #include <wayland-server.h>
 #include <wayland-egl.h>
@@ -14,6 +15,7 @@ struct wlr_wl_backend {
 	struct wlr_backend backend;
 
 	/* local state */
+	bool started;
 	struct wl_display *local_display;
 	list_t *devices;
 	list_t *outputs;
diff --git a/include/rootston/desktop.h b/include/rootston/desktop.h
index 7881e599..3d31059c 100644
--- a/include/rootston/desktop.h
+++ b/include/rootston/desktop.h
@@ -7,13 +7,13 @@
 #include <wlr/types/wlr_compositor.h>
 #include <wlr/types/wlr_wl_shell.h>
 #include <wlr/types/wlr_xdg_shell_v6.h>
-#include <wlr/types/wlr_data_device_manager.h>
 #include <wlr/types/wlr_gamma_control.h>
 #include "rootston/view.h"
+#include "rootston/config.h"
 
 struct roots_output {
 	struct roots_desktop *desktop;
-	struct wlr_output *output;
+	struct wlr_output *wlr_output;
 	struct wl_listener frame;
 	struct wl_listener resolution;
 	struct timespec last_frame;
@@ -22,12 +22,29 @@ struct roots_output {
 
 struct roots_desktop {
 	struct wl_list outputs;
+	struct timespec last_frame;
+	struct roots_server *server;
+	struct roots_config *config;
+
 	struct wlr_output_layout *layout;
-	struct wlr_compositor *wlr_compositor;
+
+	struct wlr_compositor *compositor;
 	struct wlr_wl_shell *wl_shell;
-	struct wlr_xdg_shell_v6 *xdg_shell;
-	struct wlr_data_device_manager *data_device_manager;
+	struct wlr_xdg_shell_v6 *xdg_shell_v6;
 	struct wlr_gamma_control_manager *gamma_control_manager;
+
+	struct wl_listener output_add;
+	struct wl_listener output_remove;
+	struct wl_listener xdg_shell_v6_surface;
 };
 
+struct roots_server;
+
+struct roots_desktop *desktop_create(struct roots_server *server,
+		struct roots_config *config);
+void desktop_destroy(struct roots_desktop *desktop);
+
+void output_add_notify(struct wl_listener *listener, void *data);
+void output_remove_notify(struct wl_listener *listener, void *data);
+
 #endif
diff --git a/include/rootston/server.h b/include/rootston/server.h
index f4d1de95..d9fa8f9e 100644
--- a/include/rootston/server.h
+++ b/include/rootston/server.h
@@ -3,13 +3,14 @@
 #include <wayland-server.h>
 #include <wlr/backend.h>
 #include <wlr/backend/session.h>
+#include <wlr/types/wlr_data_device_manager.h>
 #include <wlr/render.h>
 #include <wlr/xwayland.h>
 #include "rootston/config.h"
 #include "rootston/desktop.h"
 #include "rootston/input.h"
 
-struct rootston {
+struct roots_server {
 	/* Rootston resources */
 	struct roots_config *config;
 	struct roots_desktop *desktop;
@@ -21,11 +22,13 @@ struct rootston {
 
 	/* WLR tools */
 	struct wlr_backend *backend;
-	struct wlr_session *session;
 	struct wlr_renderer *renderer;
 	struct wlr_xwayland *xwayland;
+
+	/* Global resources */
+	struct wlr_data_device_manager *data_device_manager;
 };
 
-extern struct rootston root;
+extern struct roots_server server;
 
 #endif
-- 
cgit v1.2.3