For window flip mode data about flips needs to be stored per window. Add properties to 'present_window_priv' and initialize them on creation.
Signed-off-by: Roman Gilg <subd...@gmail.com> --- present/present_priv.h | 10 ++++++++++ present/present_screen.c | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/present/present_priv.h b/present/present_priv.h index ba607e2..3fba10d 100644 --- a/present/present_priv.h +++ b/present/present_priv.h @@ -206,12 +206,22 @@ typedef struct present_event { } present_event_rec; typedef struct present_window_priv { + WindowPtr window; present_event_ptr events; RRCrtcPtr crtc; /* Last reported CRTC from get_ust_msc */ uint64_t msc_offset; uint64_t msc; /* Last reported MSC from the current crtc */ struct xorg_list vblank; struct xorg_list notifies; + + /* Used for window flips */ + uint64_t event_id; + struct xorg_list exec_queue; + struct xorg_list flip_queue; + struct xorg_list idle_queue; + + present_vblank_ptr flip_pending; + present_vblank_ptr flip_active; } present_window_priv_rec, *present_window_priv_ptr; #define PresentCrtcNeverSet ((RRCrtcPtr) 1) diff --git a/present/present_screen.c b/present/present_screen.c index 868eaf8..d6c9a5e 100644 --- a/present/present_screen.c +++ b/present/present_screen.c @@ -45,6 +45,12 @@ present_get_window_priv(WindowPtr window, Bool create) return NULL; xorg_list_init(&window_priv->vblank); xorg_list_init(&window_priv->notifies); + + xorg_list_init(&window_priv->exec_queue); + xorg_list_init(&window_priv->flip_queue); + xorg_list_init(&window_priv->idle_queue); + + window_priv->window = window; window_priv->crtc = PresentCrtcNeverSet; dixSetPrivate(&window->devPrivates, &present_window_private_key, window_priv); return window_priv; -- 2.7.4 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel