[PATCH xserver v3 07/24] present: Add flip mode API hook for present_can_window_flip

Roman Gilg subdiff at gmail.com
Tue Mar 13 15:00:40 UTC 2018


Flip modes can now have different implementations of
present_can_window_flip.

Signed-off-by: Roman Gilg <subdiff at gmail.com>
---
 present/present.c      | 9 +++++++++
 present/present_priv.h | 2 ++
 present/present_scmd.c | 5 +++--
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/present/present.c b/present/present.c
index ddd9c1c..da45491 100644
--- a/present/present.c
+++ b/present/present.c
@@ -109,6 +109,15 @@ present_set_tree_pixmap(WindowPtr window,
     TraverseTree(window, present_set_tree_pixmap_visit, &visit);
 }
 
+Bool
+present_can_window_flip(WindowPtr window)
+{
+    ScreenPtr                   screen = window->drawable.pScreen;
+    present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+
+    return screen_priv->can_window_flip(window);
+}
+
 int
 present_pixmap(WindowPtr window,
                PixmapPtr pixmap,
diff --git a/present/present_priv.h b/present/present_priv.h
index 27b8048..aee3e57 100644
--- a/present/present_priv.h
+++ b/present/present_priv.h
@@ -97,6 +97,7 @@ typedef Bool (*present_priv_check_flip_ptr)(RRCrtcPtr crtc,
                                             int16_t y_off,
                                             PresentFlipReason *reason);
 typedef void (*present_priv_check_flip_window_ptr)(WindowPtr window);
+typedef Bool (*present_priv_can_window_flip_ptr)(WindowPtr window);
 
 typedef int (*present_priv_pixmap_ptr)(WindowPtr window,
                                        PixmapPtr pixmap,
@@ -148,6 +149,7 @@ typedef struct present_screen_priv {
     /* Mode hooks */
     present_priv_check_flip_ptr         check_flip;
     present_priv_check_flip_window_ptr  check_flip_window;
+    present_priv_can_window_flip_ptr    can_window_flip;
 
     present_priv_pixmap_ptr             present_pixmap;
     present_priv_create_event_id_ptr    create_event_id;
diff --git a/present/present_scmd.c b/present/present_scmd.c
index 8ba4b2e..7fd27ac 100644
--- a/present/present_scmd.c
+++ b/present/present_scmd.c
@@ -512,8 +512,8 @@ present_check_flip_window (WindowPtr window)
     }
 }
 
-Bool
-present_can_window_flip(WindowPtr window)
+static Bool
+present_scmd_can_window_flip(WindowPtr window)
 {
     ScreenPtr                   screen = window->drawable.pScreen;
     PixmapPtr                   window_pixmap;
@@ -852,6 +852,7 @@ present_scmd_init_mode_hooks(present_screen_priv_ptr screen_priv)
 {
     screen_priv->check_flip         =   &present_check_flip;
     screen_priv->check_flip_window  =   &present_check_flip_window;
+    screen_priv->can_window_flip    =   &present_scmd_can_window_flip;
 
     screen_priv->present_pixmap     =   &present_scmd_pixmap;
     screen_priv->create_event_id    =   &present_scmd_create_event_id;
-- 
2.7.4



More information about the xorg-devel mailing list