aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--.travis.yml8
-rw-r--r--backend/drm/backend.c1
-rw-r--r--backend/drm/drm.c2
-rw-r--r--backend/meson.build4
-rw-r--r--include/rootston/view.h2
-rw-r--r--meson.build44
-rw-r--r--rootston/desktop.c36
-rw-r--r--rootston/output.c8
-rw-r--r--rootston/seat.c2
-rw-r--r--types/wlr_keyboard.c4
11 files changed, 87 insertions, 26 deletions
diff --git a/.gitignore b/.gitignore
index d4edde88..48945461 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,12 +4,10 @@ Makefile
cmake_install.cmake
install_manifest.txt
.clang_complete
-*.swp
*.o
*.a
bin/
test/
build/
-.lvimrc
wayland-*-protocol.*
wlr-example.ini
diff --git a/.travis.yml b/.travis.yml
index f6bbd7f4..0028de93 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,6 +6,12 @@ compiler:
- gcc
- clang
+# Settings to try
+env:
+ matrix:
+ - OPTIONS="-Denable_libcap=true -Denable_systemd=true -Denable_elogind=false -Denable_xwayland=true"
+ - OPTIONS="-Denable_libcap=false -Denable_systemd=false -Denable_elogind=false -Denable_xwayland=false"
+
arch:
packages:
- meson
@@ -19,7 +25,7 @@ arch:
- xcb-util-image
- libcap
script:
- - "meson build"
+ - "meson build $OPTIONS"
- "ninja -C build"
script:
diff --git a/backend/drm/backend.c b/backend/drm/backend.c
index 112b2b61..c0e49f18 100644
--- a/backend/drm/backend.c
+++ b/backend/drm/backend.c
@@ -168,6 +168,7 @@ struct wlr_backend *wlr_drm_backend_create(struct wl_display *display,
return &drm->backend;
error_event:
+ wl_list_remove(&drm->session_signal.link);
wl_event_source_remove(drm->drm_event);
error_fd:
wlr_session_close_file(drm->session, drm->fd);
diff --git a/backend/drm/drm.c b/backend/drm/drm.c
index b9aae948..024bc929 100644
--- a/backend/drm/drm.c
+++ b/backend/drm/drm.c
@@ -469,7 +469,7 @@ static bool wlr_drm_connector_set_mode(struct wlr_output *output,
if (!crtc) {
return false;
}
- wlr_log(L_DEBUG, "%s: crtc=%ju ovr=%jd pri=%jd cur=%jd", conn->output.name,
+ wlr_log(L_DEBUG, "%s: crtc=%td ovr=%td pri=%td cur=%td", conn->output.name,
crtc - drm->crtcs,
crtc->overlay ? crtc->overlay - drm->overlay_planes : -1,
crtc->primary ? crtc->primary - drm->primary_planes : -1,
diff --git a/backend/meson.build b/backend/meson.build
index 9931f546..9c8f5852 100644
--- a/backend/meson.build
+++ b/backend/meson.build
@@ -33,11 +33,11 @@ else
backend_files += files('session/direct.c')
endif
-if systemd.found()
+if systemd.found() and get_option('enable_systemd')
backend_files += files('session/logind.c')
endif
-if elogind.found()
+if elogind.found() and get_option('enable_elogind')
backend_files += files('session/logind.c')
endif
diff --git a/include/rootston/view.h b/include/rootston/view.h
index 9312c8c3..f6968c7a 100644
--- a/include/rootston/view.h
+++ b/include/rootston/view.h
@@ -54,7 +54,9 @@ struct roots_xwayland_surface {
enum roots_view_type {
ROOTS_WL_SHELL_VIEW,
ROOTS_XDG_SHELL_V6_VIEW,
+#ifdef WLR_HAS_XWAYLAND
ROOTS_XWAYLAND_VIEW,
+#endif
};
struct roots_view {
diff --git a/meson.build b/meson.build
index aee4b11b..55b07efa 100644
--- a/meson.build
+++ b/meson.build
@@ -153,6 +153,22 @@ wlroots = declare_dependency(
include_directories: wlr_inc,
)
+
+summary = [
+ '',
+ '----------------',
+ 'wlroots @0@'.format(meson.project_version()),
+ '',
+ ' libcap: @0@'.format(get_option('enable_libcap')),
+ ' systemd: @0@'.format(get_option('enable_systemd')),
+ ' elogind: @0@'.format(get_option('enable_elogind')),
+ ' xwayland: @0@'.format(get_option('enable_xwayland')),
+ '----------------',
+ ''
+]
+message('\n'.join(summary))
+
+
subdir('rootston')
subdir('examples')
@@ -164,3 +180,31 @@ pkgconfig.generate(
name: meson.project_name(),
description: 'Wayland compositor library',
)
+
+git = find_program('git', required: false)
+if git.found()
+ all_files = run_command(
+ git,
+ ['--git-dir=@0@/.git'.format(meson.source_root()),
+ 'ls-files',
+ ':/*.[ch]'])
+ all_files = files(all_files.stdout().split())
+
+ etags = find_program('etags', required: false)
+ if etags.found() and all_files.length() > 0
+ custom_target('etags',
+ build_by_default: true,
+ input: all_files,
+ output: 'TAGS',
+ command: [etags.path(), '-o', 'TAGS'] + all_files)
+ endif
+
+ ctags = find_program('ctags', required: false)
+ if ctags.found() and all_files.length() > 0
+ custom_target('ctags',
+ build_by_default: true,
+ input: all_files,
+ output: 'tags',
+ command: [ctags.path(), '-o', 'tags'] + all_files)
+ endif
+endif
diff --git a/rootston/desktop.c b/rootston/desktop.c
index 9abcfa33..5fd4a5cc 100644
--- a/rootston/desktop.c
+++ b/rootston/desktop.c
@@ -628,6 +628,24 @@ struct roots_desktop *desktop_create(struct roots_server *server,
desktop->server = server;
desktop->config = config;
+ desktop->layout = wlr_output_layout_create();
+ desktop->layout_change.notify = handle_layout_change;
+ wl_signal_add(&desktop->layout->events.change, &desktop->layout_change);
+
+ desktop->compositor = wlr_compositor_create(server->wl_display,
+ server->renderer);
+
+ desktop->xdg_shell_v6 = wlr_xdg_shell_v6_create(server->wl_display);
+ wl_signal_add(&desktop->xdg_shell_v6->events.new_surface,
+ &desktop->xdg_shell_v6_surface);
+ desktop->xdg_shell_v6_surface.notify = handle_xdg_shell_v6_surface;
+
+ desktop->wl_shell = wlr_wl_shell_create(server->wl_display);
+ wl_signal_add(&desktop->wl_shell->events.new_surface,
+ &desktop->wl_shell_surface);
+ desktop->wl_shell_surface.notify = handle_wl_shell_surface;
+
+#ifdef WLR_HAS_XWAYLAND
const char *cursor_theme = NULL;
const char *cursor_default = ROOTS_XCURSOR_DEFAULT;
struct roots_cursor_config *cc =
@@ -648,24 +666,6 @@ struct roots_desktop *desktop_create(struct roots_server *server,
return NULL;
}
- desktop->layout = wlr_output_layout_create();
- desktop->layout_change.notify = handle_layout_change;
- wl_signal_add(&desktop->layout->events.change, &desktop->layout_change);
-
- desktop->compositor = wlr_compositor_create(server->wl_display,
- server->renderer);
-
- desktop->xdg_shell_v6 = wlr_xdg_shell_v6_create(server->wl_display);
- wl_signal_add(&desktop->xdg_shell_v6->events.new_surface,
- &desktop->xdg_shell_v6_surface);
- desktop->xdg_shell_v6_surface.notify = handle_xdg_shell_v6_surface;
-
- desktop->wl_shell = wlr_wl_shell_create(server->wl_display);
- wl_signal_add(&desktop->wl_shell->events.new_surface,
- &desktop->wl_shell_surface);
- desktop->wl_shell_surface.notify = handle_wl_shell_surface;
-
-#ifdef WLR_HAS_XWAYLAND
if (config->xwayland) {
desktop->xwayland = wlr_xwayland_create(server->wl_display,
desktop->compositor);
diff --git a/rootston/output.c b/rootston/output.c
index f0710b11..c46ba115 100644
--- a/rootston/output.c
+++ b/rootston/output.c
@@ -120,15 +120,18 @@ static void view_for_each_surface(struct roots_view *view,
wl_shell_surface_for_each_surface(view->wl_shell_surface, view->x,
view->y, view->rotation, false, iterator, user_data);
break;
+#ifdef WLR_HAS_XWAYLAND
case ROOTS_XWAYLAND_VIEW:
if (view->wlr_surface != NULL) {
surface_for_each_surface(view->wlr_surface, view->x, view->y,
view->rotation, iterator, user_data);
}
break;
+#endif
}
}
+#ifdef WLR_HAS_XWAYLAND
static void xwayland_children_for_each_surface(
struct wlr_xwayland_surface *surface,
surface_iterator_func_t iterator, void *user_data) {
@@ -141,6 +144,7 @@ static void xwayland_children_for_each_surface(
xwayland_children_for_each_surface(child, iterator, user_data);
}
}
+#endif
struct render_data {
@@ -333,8 +337,10 @@ static bool has_standalone_surface(struct roots_view *view) {
return wl_list_empty(&view->xdg_surface_v6->popups);
case ROOTS_WL_SHELL_VIEW:
return wl_list_empty(&view->wl_shell_surface->popups);
+#ifdef WLR_HAS_XWAYLAND
case ROOTS_XWAYLAND_VIEW:
return wl_list_empty(&view->xwayland_surface->children);
+#endif
}
return true;
}
@@ -444,10 +450,12 @@ static void render_output(struct roots_output *output) {
// During normal rendering the xwayland window tree isn't traversed
// because all windows are rendered. Here we only want to render
// the fullscreen window's children so we have to traverse the tree.
+#ifdef WLR_HAS_XWAYLAND
if (view->type == ROOTS_XWAYLAND_VIEW) {
xwayland_children_for_each_surface(view->xwayland_surface,
render_surface, &data);
}
+#endif
goto renderer_end;
}
diff --git a/rootston/seat.c b/rootston/seat.c
index 7ff46f98..55866ce6 100644
--- a/rootston/seat.c
+++ b/rootston/seat.c
@@ -732,10 +732,12 @@ void roots_seat_set_focus(struct roots_seat *seat, struct roots_view *view) {
return;
}
+#ifdef WLR_HAS_XWAYLAND
if (view && view->type == ROOTS_XWAYLAND_VIEW &&
view->xwayland_surface->override_redirect) {
return;
}
+#endif
struct roots_seat_view *seat_view = NULL;
if (view != NULL) {
seat_view = roots_seat_view_from_view(seat, view);
diff --git a/types/wlr_keyboard.c b/types/wlr_keyboard.c
index b0dc97aa..29552eb4 100644
--- a/types/wlr_keyboard.c
+++ b/types/wlr_keyboard.c
@@ -215,13 +215,13 @@ void wlr_keyboard_set_keymap(struct wlr_keyboard *kb,
}
kb->keymap_fd = os_create_anonymous_file(kb->keymap_size);
if (kb->keymap_fd < 0) {
- wlr_log(L_ERROR, "creating a keymap file for %lu bytes failed", kb->keymap_size);
+ wlr_log(L_ERROR, "creating a keymap file for %zu bytes failed", kb->keymap_size);
goto err;
}
void *ptr = mmap(NULL, kb->keymap_size,
PROT_READ | PROT_WRITE, MAP_SHARED, kb->keymap_fd, 0);
if (ptr == (void*)-1) {
- wlr_log(L_ERROR, "failed to mmap() %lu bytes", kb->keymap_size);
+ wlr_log(L_ERROR, "failed to mmap() %zu bytes", kb->keymap_size);
goto err;
}
strcpy(ptr, keymap_str);