From b6d7c3ed8ec6ae29af5d585db5417394ff49f3c7 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Sat, 23 Sep 2017 00:29:53 -0400 Subject: Initialize display, backend; add frame handling --- rootston/main.c | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) (limited to 'rootston/main.c') diff --git a/rootston/main.c b/rootston/main.c index 9be2ff41..b95840a9 100644 --- a/rootston/main.c +++ b/rootston/main.c @@ -1,14 +1,45 @@ +#define _POSIX_C_SOURCE 200112L +#include +#include #include +#include +#include +#include #include #include "rootston/config.h" #include "rootston/server.h" -struct rootston root = { 0 }; +struct roots_server server = { 0 }; int main(int argc, char **argv) { - root.config = parse_args(argc, argv); - root.wl_display = wl_display_create(); - root.wl_event_loop = wl_display_get_event_loop(root.wl_display); - wl_display_init_shm(root.wl_display); + assert(server.config = parse_args(argc, argv)); + assert(server.wl_display = wl_display_create()); + assert(server.wl_event_loop = wl_display_get_event_loop(server.wl_display)); + + assert(server.backend = wlr_backend_autocreate(server.wl_display)); + + assert(server.renderer = wlr_gles2_renderer_create(server.backend)); + wl_display_init_shm(server.wl_display); + server.desktop = desktop_create(&server, server.config); + server.data_device_manager = wlr_data_device_manager_create( + server.wl_display); + + const char *socket = wl_display_add_socket_auto(server.wl_display); + if (!socket) { + wlr_log_errno(L_ERROR, "Unable to open wayland socket"); + wlr_backend_destroy(server.backend); + return 1; + } + + wlr_log(L_INFO, "Running compositor on wayland display '%s'", socket); + setenv("_WAYLAND_DISPLAY", socket, true); + + if (!wlr_backend_start(server.backend)) { + wlr_log(L_ERROR, "Failed to start backend"); + wlr_backend_destroy(server.backend); + return 1; + } + + wl_display_run(server.wl_display); return 0; } -- cgit v1.2.3