xwayland: Fix build without glamor
Present support in Xwayland relies on glamor, make sure Xwayland can be built without glamor by moving references to Present code inside the conditional GLAMOR_HAS_GBM. Reported-by: Matt Turner <mattst88@gmail.com> Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Roman Gilg <subdiff@gmail.com>
This commit is contained in:
parent
bf147f67b2
commit
c3ae963a7b
|
@ -11,7 +11,6 @@ Xwayland_CFLAGS = \
|
||||||
|
|
||||||
Xwayland_SOURCES = \
|
Xwayland_SOURCES = \
|
||||||
xwayland.c \
|
xwayland.c \
|
||||||
xwayland-present.c \
|
|
||||||
xwayland-input.c \
|
xwayland-input.c \
|
||||||
xwayland-cursor.c \
|
xwayland-cursor.c \
|
||||||
xwayland-shm.c \
|
xwayland-shm.c \
|
||||||
|
@ -35,7 +34,8 @@ Xwayland_built_sources =
|
||||||
|
|
||||||
if GLAMOR_EGL
|
if GLAMOR_EGL
|
||||||
Xwayland_SOURCES += \
|
Xwayland_SOURCES += \
|
||||||
xwayland-glamor.c
|
xwayland-glamor.c \
|
||||||
|
xwayland-present.c
|
||||||
if XV
|
if XV
|
||||||
Xwayland_SOURCES += \
|
Xwayland_SOURCES += \
|
||||||
xwayland-glamor-xv.c
|
xwayland-glamor-xv.c
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
srcs = [
|
srcs = [
|
||||||
'xwayland.c',
|
'xwayland.c',
|
||||||
'xwayland-present.c',
|
|
||||||
'xwayland-input.c',
|
'xwayland-input.c',
|
||||||
'xwayland-cursor.c',
|
'xwayland-cursor.c',
|
||||||
'xwayland-shm.c',
|
'xwayland-shm.c',
|
||||||
|
@ -53,7 +52,7 @@ srcs += code.process(dmabuf_xml)
|
||||||
|
|
||||||
xwayland_glamor = []
|
xwayland_glamor = []
|
||||||
if gbm_dep.found()
|
if gbm_dep.found()
|
||||||
srcs += 'xwayland-glamor.c'
|
srcs += [ 'xwayland-glamor.c', 'xwayland-present.c' ]
|
||||||
if build_xv
|
if build_xv
|
||||||
srcs += 'xwayland-glamor-xv.c'
|
srcs += 'xwayland-glamor-xv.c'
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -525,6 +525,7 @@ xwl_realize_window(WindowPtr window)
|
||||||
wl_region_destroy(region);
|
wl_region_destroy(region);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GLAMOR_HAS_GBM
|
||||||
if (xwl_screen->present) {
|
if (xwl_screen->present) {
|
||||||
xwl_window->present_crtc_fake = RRCrtcCreate(xwl_screen->screen, xwl_window);
|
xwl_window->present_crtc_fake = RRCrtcCreate(xwl_screen->screen, xwl_window);
|
||||||
xwl_window->present_msc = 1;
|
xwl_window->present_msc = 1;
|
||||||
|
@ -533,6 +534,7 @@ xwl_realize_window(WindowPtr window)
|
||||||
xorg_list_init(&xwl_window->present_event_list);
|
xorg_list_init(&xwl_window->present_event_list);
|
||||||
xorg_list_init(&xwl_window->present_release_queue);
|
xorg_list_init(&xwl_window->present_release_queue);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
wl_display_flush(xwl_screen->display);
|
wl_display_flush(xwl_screen->display);
|
||||||
|
|
||||||
|
@ -599,9 +601,11 @@ xwl_unrealize_window(WindowPtr window)
|
||||||
|
|
||||||
compUnredirectWindow(serverClient, window, CompositeRedirectManual);
|
compUnredirectWindow(serverClient, window, CompositeRedirectManual);
|
||||||
|
|
||||||
|
#ifdef GLAMOR_HAS_GBM
|
||||||
if (xwl_screen->present)
|
if (xwl_screen->present)
|
||||||
/* Always cleanup Present (Present might have been active on child window) */
|
/* Always cleanup Present (Present might have been active on child window) */
|
||||||
xwl_present_cleanup(window);
|
xwl_present_cleanup(window);
|
||||||
|
#endif
|
||||||
|
|
||||||
screen->UnrealizeWindow = xwl_screen->UnrealizeWindow;
|
screen->UnrealizeWindow = xwl_screen->UnrealizeWindow;
|
||||||
ret = (*screen->UnrealizeWindow) (window);
|
ret = (*screen->UnrealizeWindow) (window);
|
||||||
|
@ -621,8 +625,10 @@ xwl_unrealize_window(WindowPtr window)
|
||||||
if (xwl_window->frame_callback)
|
if (xwl_window->frame_callback)
|
||||||
wl_callback_destroy(xwl_window->frame_callback);
|
wl_callback_destroy(xwl_window->frame_callback);
|
||||||
|
|
||||||
|
#ifdef GLAMOR_HAS_GBM
|
||||||
if (xwl_window->present_crtc_fake)
|
if (xwl_window->present_crtc_fake)
|
||||||
RRCrtcDestroy(xwl_window->present_crtc_fake);
|
RRCrtcDestroy(xwl_window->present_crtc_fake);
|
||||||
|
#endif
|
||||||
|
|
||||||
free(xwl_window);
|
free(xwl_window);
|
||||||
dixSetPrivate(&window->devPrivates, &xwl_window_private_key, NULL);
|
dixSetPrivate(&window->devPrivates, &xwl_window_private_key, NULL);
|
||||||
|
@ -709,9 +715,11 @@ xwl_screen_post_damage(struct xwl_screen *xwl_screen)
|
||||||
|
|
||||||
xorg_list_for_each_entry_safe(xwl_window, next_xwl_window,
|
xorg_list_for_each_entry_safe(xwl_window, next_xwl_window,
|
||||||
&xwl_screen->damage_window_list, link_damage) {
|
&xwl_screen->damage_window_list, link_damage) {
|
||||||
|
#ifdef GLAMOR_HAS_GBM
|
||||||
/* Present on the main surface. So don't commit here as well. */
|
/* Present on the main surface. So don't commit here as well. */
|
||||||
if (xwl_window->present_window)
|
if (xwl_window->present_window)
|
||||||
continue;
|
continue;
|
||||||
|
#endif
|
||||||
/* If we're waiting on a frame callback from the server,
|
/* If we're waiting on a frame callback from the server,
|
||||||
* don't attach a new buffer. */
|
* don't attach a new buffer. */
|
||||||
if (xwl_window->frame_callback)
|
if (xwl_window->frame_callback)
|
||||||
|
@ -1053,10 +1061,10 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
|
||||||
ErrorF("Failed to initialize glamor, falling back to sw\n");
|
ErrorF("Failed to initialize glamor, falling back to sw\n");
|
||||||
xwl_screen->glamor = 0;
|
xwl_screen->glamor = 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (xwl_screen->glamor && xwl_screen->rootless)
|
if (xwl_screen->glamor && xwl_screen->rootless)
|
||||||
xwl_screen->present = xwl_present_init(pScreen);
|
xwl_screen->present = xwl_present_init(pScreen);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!xwl_screen->glamor) {
|
if (!xwl_screen->glamor) {
|
||||||
xwl_screen->CreateScreenResources = pScreen->CreateScreenResources;
|
xwl_screen->CreateScreenResources = pScreen->CreateScreenResources;
|
||||||
|
|
|
@ -127,7 +127,7 @@ struct xwl_window {
|
||||||
struct xorg_list link_damage;
|
struct xorg_list link_damage;
|
||||||
struct wl_callback *frame_callback;
|
struct wl_callback *frame_callback;
|
||||||
Bool allow_commits;
|
Bool allow_commits;
|
||||||
|
#ifdef GLAMOR_HAS_GBM
|
||||||
/* present */
|
/* present */
|
||||||
RRCrtcPtr present_crtc_fake;
|
RRCrtcPtr present_crtc_fake;
|
||||||
struct xorg_list present_link;
|
struct xorg_list present_link;
|
||||||
|
@ -143,8 +143,10 @@ struct xwl_window {
|
||||||
|
|
||||||
struct xorg_list present_event_list;
|
struct xorg_list present_event_list;
|
||||||
struct xorg_list present_release_queue;
|
struct xorg_list present_release_queue;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef GLAMOR_HAS_GBM
|
||||||
struct xwl_present_event {
|
struct xwl_present_event {
|
||||||
uint64_t event_id;
|
uint64_t event_id;
|
||||||
uint64_t target_msc;
|
uint64_t target_msc;
|
||||||
|
@ -159,6 +161,7 @@ struct xwl_present_event {
|
||||||
|
|
||||||
struct xorg_list list;
|
struct xorg_list list;
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MODIFIER_META 0x01
|
#define MODIFIER_META 0x01
|
||||||
|
|
||||||
|
@ -378,8 +381,10 @@ struct wl_buffer *xwl_glamor_pixmap_get_wl_buffer(PixmapPtr pixmap,
|
||||||
unsigned short height,
|
unsigned short height,
|
||||||
Bool *created);
|
Bool *created);
|
||||||
|
|
||||||
|
#ifdef GLAMOR_HAS_GBM
|
||||||
Bool xwl_present_init(ScreenPtr screen);
|
Bool xwl_present_init(ScreenPtr screen);
|
||||||
void xwl_present_cleanup(WindowPtr window);
|
void xwl_present_cleanup(WindowPtr window);
|
||||||
|
#endif
|
||||||
|
|
||||||
void xwl_screen_release_tablet_manager(struct xwl_screen *xwl_screen);
|
void xwl_screen_release_tablet_manager(struct xwl_screen *xwl_screen);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue