diff --git a/hw/xwayland/Makefile.am b/hw/xwayland/Makefile.am index f20973797..681b45150 100644 --- a/hw/xwayland/Makefile.am +++ b/hw/xwayland/Makefile.am @@ -16,6 +16,7 @@ Xwayland_SOURCES = \ xwayland-glamor.h \ xwayland-pixmap.c \ xwayland-pixmap.h \ + xwayland-present.h \ xwayland-shm.c \ xwayland-shm.h \ xwayland-types.h \ diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build index 6cf502289..9a81ae762 100644 --- a/hw/xwayland/meson.build +++ b/hw/xwayland/meson.build @@ -5,6 +5,7 @@ srcs = [ 'xwayland-glamor.h', 'xwayland-pixmap.c', 'xwayland-pixmap.h', + 'xwayland-present.h', 'xwayland-shm.c', 'xwayland-shm.h', 'xwayland-types.h', diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c index c766ce19b..0cf18e7c1 100644 --- a/hw/xwayland/xwayland-present.c +++ b/hw/xwayland/xwayland-present.c @@ -31,6 +31,7 @@ #include #include "xwayland.h" +#include "xwayland-present.h" #include "xwayland-window.h" #include "xwayland-pixmap.h" #include "glamor.h" diff --git a/hw/xwayland/xwayland-present.h b/hw/xwayland/xwayland-present.h new file mode 100644 index 000000000..e16357824 --- /dev/null +++ b/hw/xwayland/xwayland-present.h @@ -0,0 +1,74 @@ +/* + * Copyright © 2018 Roman Gilg + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of the + * copyright holders not be used in advertising or publicity + * pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied + * warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +#ifndef XWAYLAND_PRESENT_H +#define XWAYLAND_PRESENT_H + +#include + +#include + +#include "xwayland-types.h" + +#ifdef GLAMOR_HAS_GBM +struct xwl_present_window { + struct xwl_screen *xwl_screen; + struct xwl_present_event *sync_flip; + WindowPtr window; + struct xorg_list frame_callback_list; + + uint64_t msc; + uint64_t ust; + + OsTimerPtr frame_timer; + + struct wl_callback *sync_callback; + + struct xorg_list event_list; + struct xorg_list release_queue; +}; + +struct xwl_present_event { + uint64_t event_id; + uint64_t target_msc; + + Bool abort; + Bool pending; + Bool buffer_released; + + struct xwl_present_window *xwl_present_window; + struct wl_buffer *buffer; + + struct xorg_list list; +}; + +void xwl_present_frame_callback(struct xwl_present_window *xwl_present_window); +Bool xwl_present_init(ScreenPtr screen); +void xwl_present_cleanup(WindowPtr window); +void xwl_present_unrealize_window(WindowPtr window); + +#endif /* GLAMOR_HAS_GBM */ + +#endif /* XWAYLAND_PRESENT_H */ diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c index 9246edd02..4a1a64b49 100644 --- a/hw/xwayland/xwayland-window.c +++ b/hw/xwayland/xwayland-window.c @@ -36,6 +36,7 @@ #include "propertyst.h" #include "xwayland-types.h" +#include "xwayland-present.h" #include "xwayland-window.h" #include "xwayland-window-buffers.h" #include "xwayland-shm.h" diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c index 5476e3c7d..1e58f473c 100644 --- a/hw/xwayland/xwayland.c +++ b/hw/xwayland/xwayland.c @@ -39,6 +39,7 @@ #include "xwayland.h" #include "xwayland-glamor.h" #include "xwayland-pixmap.h" +#include "xwayland-present.h" #include "xwayland-shm.h" #include "xwayland-window-buffers.h" #include "xwayland-window.h" diff --git a/hw/xwayland/xwayland.h b/hw/xwayland/xwayland.h index 60cb1b622..18c49b23f 100644 --- a/hw/xwayland/xwayland.h +++ b/hw/xwayland/xwayland.h @@ -121,39 +121,6 @@ struct xwl_screen { Atom allow_commits_prop; }; -#ifdef GLAMOR_HAS_GBM -struct xwl_present_window { - struct xwl_screen *xwl_screen; - struct xwl_present_event *sync_flip; - WindowPtr window; - struct xorg_list frame_callback_list; - - uint64_t msc; - uint64_t ust; - - OsTimerPtr frame_timer; - - struct wl_callback *sync_callback; - - struct xorg_list event_list; - struct xorg_list release_queue; -}; - -struct xwl_present_event { - uint64_t event_id; - uint64_t target_msc; - - Bool abort; - Bool pending; - Bool buffer_released; - - struct xwl_present_window *xwl_present_window; - struct wl_buffer *buffer; - - struct xorg_list list; -}; -#endif - #define MODIFIER_META 0x01 struct xwl_touch { @@ -384,17 +351,6 @@ void xwl_output_set_window_randr_emu_props(struct xwl_screen *xwl_screen, RRModePtr xwayland_cvt(int HDisplay, int VDisplay, float VRefresh, Bool Reduced, Bool Interlaced); -#ifdef XWL_HAS_GLAMOR - -#ifdef GLAMOR_HAS_GBM -void xwl_present_frame_callback(struct xwl_present_window *xwl_present_window); -Bool xwl_present_init(ScreenPtr screen); -void xwl_present_cleanup(WindowPtr window); -void xwl_present_unrealize_window(WindowPtr window); -#endif /* GLAMOR_HAS_GBM */ - -#endif /* XWL_HAS_GLAMOR */ - void xwl_screen_release_tablet_manager(struct xwl_screen *xwl_screen); void xwl_screen_init_xdg_output(struct xwl_screen *xwl_screen);