summaryrefslogtreecommitdiff
path: root/present
diff options
context:
space:
mode:
Diffstat (limited to 'present')
-rw-r--r--present/present.h2
-rw-r--r--present/present_screen.c23
2 files changed, 24 insertions, 1 deletions
diff --git a/present/present.h b/present/present.h
index affb75f35..3d0b9722b 100644
--- a/present/present.h
+++ b/present/present.h
@@ -174,6 +174,8 @@ present_event_abandon(RRCrtcPtr crtc);
extern _X_EXPORT Bool
present_screen_init(ScreenPtr screen, present_screen_info_ptr info);
+extern _X_EXPORT Bool
+present_wnmd_screen_init(ScreenPtr screen, present_wnmd_info_ptr info);
typedef void (*present_complete_notify_proc)(WindowPtr window,
CARD8 kind,
diff --git a/present/present_screen.c b/present/present_screen.c
index 8ad14ad17..c7e37c5fd 100644
--- a/present/present_screen.c
+++ b/present/present_screen.c
@@ -239,7 +239,28 @@ present_screen_priv_init(ScreenPtr screen)
}
/*
- * Initialize a screen for use with present
+ * Initialize a screen for use with present in window flip mode (wnmd)
+ */
+int
+present_wnmd_screen_init(ScreenPtr screen, present_wnmd_info_ptr info)
+{
+ if (!present_screen_register_priv_keys())
+ return FALSE;
+
+ if (!present_screen_priv(screen)) {
+ present_screen_priv_ptr screen_priv = present_screen_priv_init(screen);
+ if (!screen_priv)
+ return FALSE;
+
+ screen_priv->wnmd_info = info;
+ present_wnmd_init_mode_hooks(screen_priv);
+ }
+
+ return TRUE;
+}
+
+/*
+ * Initialize a screen for use with present in default screen flip mode (scmd)
*/
int
present_screen_init(ScreenPtr screen, present_screen_info_ptr info)