aboutsummaryrefslogtreecommitdiff
path: root/xwayland
diff options
context:
space:
mode:
authorTony Crisci <tony@dubstepdish.com>2017-10-24 09:11:12 -0400
committerTony Crisci <tony@dubstepdish.com>2017-10-24 09:11:12 -0400
commit2ca502b546f57fe7252dc990e7bfe89e151430a5 (patch)
tree87f66bd9bf5aa83f2b5f344d07143d4831b8459d /xwayland
parent0f7f6b1373438675b5f4d6a6ca0b4b88b472e322 (diff)
parentbbf08f3ef9cf831c6af49060871995eaa0963bca (diff)
Merge branch 'master' into feature/xwm-rewrite
Diffstat (limited to 'xwayland')
-rw-r--r--xwayland/meson.build9
-rw-r--r--xwayland/xwm.c21
-rw-r--r--xwayland/xwm.h2
3 files changed, 31 insertions, 1 deletions
diff --git a/xwayland/meson.build b/xwayland/meson.build
index d989f6dd..a05ae584 100644
--- a/xwayland/meson.build
+++ b/xwayland/meson.build
@@ -6,5 +6,12 @@ lib_wlr_xwayland = static_library(
'xwm.c',
),
include_directories: wlr_inc,
- dependencies: [wayland_server, xcb, xcb_composite, xcb_icccm, pixman],
+ dependencies: [
+ wayland_server,
+ xcb,
+ xcb_composite,
+ xcb_xfixes,
+ xcb_icccm,
+ pixman,
+ ],
)
diff --git a/xwayland/xwm.c b/xwayland/xwm.c
index c278f1bd..90801d99 100644
--- a/xwayland/xwm.c
+++ b/xwayland/xwm.c
@@ -3,6 +3,7 @@
#endif
#include <stdlib.h>
#include <xcb/composite.h>
+#include <xcb/xfixes.h>
#include "wlr/util/log.h"
#include "wlr/types/wlr_surface.h"
#include "wlr/xwayland.h"
@@ -787,6 +788,7 @@ struct wlr_xwm *xwm_create(struct wlr_xwayland *wlr_xwayland) {
WL_EVENT_READABLE, x11_event_handler, xwm);
wl_event_source_check(xwm->event_source);
+ xcb_prefetch_extension_data(xwm->xcb_conn, &xcb_xfixes_id);
xwm_get_resources(xwm);
xcb_screen_iterator_t screen_iterator =
@@ -824,6 +826,25 @@ struct wlr_xwm *xwm_create(struct wlr_xwayland *wlr_xwayland) {
xwm->atoms[NET_WM_S0], XCB_CURRENT_TIME));
xcb_flush(xwm->xcb_conn);
+ xwm->xfixes = xcb_get_extension_data(xwm->xcb_conn, &xcb_xfixes_id);
+
+ if (!xwm->xfixes || !xwm->xfixes->present) {
+ wlr_log(L_DEBUG, "xfixes not available");
+ }
+
+ xcb_xfixes_query_version_cookie_t xfixes_cookie;
+ xcb_xfixes_query_version_reply_t *xfixes_reply;
+ xfixes_cookie =
+ xcb_xfixes_query_version(xwm->xcb_conn, XCB_XFIXES_MAJOR_VERSION,
+ XCB_XFIXES_MINOR_VERSION);
+ xfixes_reply =
+ xcb_xfixes_query_version_reply(xwm->xcb_conn, xfixes_cookie, NULL);
+
+ wlr_log(L_DEBUG, "xfixes version: %d.%d",
+ xfixes_reply->major_version, xfixes_reply->minor_version);
+
+ free(xfixes_reply);
+
xwm->surface_create_listener.notify = create_surface_handler;
wl_signal_add(&wlr_xwayland->compositor->events.create_surface,
&xwm->surface_create_listener);
diff --git a/xwayland/xwm.h b/xwayland/xwm.h
index be710a1b..a04b1065 100644
--- a/xwayland/xwm.h
+++ b/xwayland/xwm.h
@@ -85,6 +85,8 @@ struct wlr_xwm {
struct wl_list new_surfaces;
struct wl_list unpaired_surfaces;
+
+ const xcb_query_extension_reply_t *xfixes;
};
void xwm_destroy(struct wlr_xwm *xwm);