swc

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.nihaljere.xyz/swc
Log | Files | Refs | README | LICENSE

commit ae9813080bb100482eb30288ecad81a49b7f26f6
parent c704742030d7ae8d797c9a7fc736c08fcab03bc3
Author: Michael Forney <mforney@mforney.org>
Date:   Tue,  3 Dec 2013 20:33:50 -0800

Move data_device_manager initialization to swc.c

Also keep track of global created.

Diffstat:
Mlibswc/compositor.c | 1-
Mlibswc/data_device_manager.c | 19++++++++++++++++---
Mlibswc/data_device_manager.h | 5+++--
Mlibswc/swc.c | 28+++++++++++++++++++---------
4 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/libswc/compositor.c b/libswc/compositor.c @@ -416,7 +416,6 @@ void swc_compositor_add_globals(struct swc_compositor * compositor, wl_global_create(display, &wl_compositor_interface, 3, compositor, &bind_compositor); - swc_data_device_manager_add_globals(display); swc_drm_add_globals(&compositor->drm, display); wl_list_for_each(output, &compositor->outputs, link) diff --git a/libswc/data_device_manager.c b/libswc/data_device_manager.c @@ -27,6 +27,11 @@ #include "internal.h" #include "seat.h" +static struct +{ + struct wl_global * global; +} data_device_manager; + static void create_data_source(struct wl_client * client, struct wl_resource * resource, uint32_t id) { @@ -62,9 +67,17 @@ static void bind_data_device_manager(struct wl_client * client, void * data, (resource, &data_device_manager_implementation, NULL, NULL); } -void swc_data_device_manager_add_globals(struct wl_display * display) +bool swc_data_device_manager_initialize() +{ + data_device_manager.global + = wl_global_create(swc.display, &wl_data_device_manager_interface, 1, + NULL, &bind_data_device_manager); + + return data_device_manager.global != NULL; +} + +void swc_data_device_manager_finalize() { - wl_global_create(display, &wl_data_device_manager_interface, 1, NULL, - &bind_data_device_manager); + wl_global_destroy(data_device_manager.global); } diff --git a/libswc/data_device_manager.h b/libswc/data_device_manager.h @@ -24,9 +24,10 @@ #ifndef SWC_DATA_DEVICE_MANAGER_H #define SWC_DATA_DEVICE_MANAGER_H -#include <wayland-server.h> +#include <stdbool.h> -void swc_data_device_manager_add_globals(struct wl_display * display); +bool swc_data_device_manager_initialize(); +void swc_data_device_manager_finalize(); #endif diff --git a/libswc/swc.c b/libswc/swc.c @@ -24,6 +24,7 @@ #include "swc.h" #include "bindings.h" #include "compositor.h" +#include "data_device_manager.h" #include "internal.h" #include "keyboard.h" #include "pointer.h" @@ -71,22 +72,28 @@ bool swc_initialize(struct wl_display * display, goto error0; } + if (!swc_data_device_manager_initialize()) + { + ERROR("Could not initialize data device manager\n"); + goto error1; + } + if (!swc_seat_initialize()) { fprintf(stderr, "Could not initialize seat\n"); - goto error1; + goto error2; } if (!swc_bindings_initialize()) { fprintf(stderr, "Could not initialize bindings\n"); - goto error2; + goto error3; } if (!swc_compositor_initialize(&compositor, display, swc.event_loop)) { fprintf(stderr, "Could not initialize compositor\n"); - goto error3; + goto error4; } swc_compositor_add_globals(&compositor, display); @@ -94,14 +101,14 @@ bool swc_initialize(struct wl_display * display, if (!swc_shell_initialize()) { fprintf(stderr, "Could not initialize shell\n"); - goto error4; + goto error5; } #ifdef ENABLE_XWAYLAND if (!swc_xserver_initialize()) { fprintf(stderr, "Could not initialize xwayland\n"); - goto error5; + goto error6; } #endif @@ -109,14 +116,16 @@ bool swc_initialize(struct wl_display * display, return true; - error5: + error6: swc_shell_finalize(); - error4: + error5: swc_compositor_finish(&compositor); - error3: + error4: swc_bindings_finalize(); - error2: + error3: swc_seat_finalize(); + error2: + swc_data_device_manager_finalize(); error1: udev_unref(swc.udev); error0: @@ -133,6 +142,7 @@ void swc_finalize() swc_compositor_finish(&compositor); swc_bindings_finalize(); swc_seat_finalize(); + swc_data_device_manager_finalize(); udev_unref(swc.udev); }