diff options
author | emersion <contact@emersion.fr> | 2018-01-28 21:22:50 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2018-01-28 21:22:50 +0100 |
commit | 1ee61dbd0f6ab8cf9dfafb085707bd67cca50e70 (patch) | |
tree | 502ff5ebd47df13e8bb432d379cab44532c54deb /rootston | |
parent | 692d33bf8b752cc3b8a0b7f2b29c2b49dd4f718b (diff) | |
parent | f0b3a71fbc72eeccf44bc6a6f6c39a80af918463 (diff) |
Merge remote-tracking branch 'upstream/master' into output-damage
Diffstat (limited to 'rootston')
-rw-r--r-- | rootston/desktop.c | 36 | ||||
-rw-r--r-- | rootston/output.c | 8 | ||||
-rw-r--r-- | rootston/seat.c | 2 |
3 files changed, 28 insertions, 18 deletions
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); |