From bd8ecd9be1568b59258b6d2f78530ede345b7c7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Fri, 16 Sep 2016 09:51:31 -0700 Subject: [PATCH] Add SyncSharedPixmap ScreenRec hook MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michel Dänzer Reviewed-by: Alex Deucher Signed-off-by: Keith Packard --- include/scrnintstr.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/include/scrnintstr.h b/include/scrnintstr.h index 5330714cb..52e8382bf 100644 --- a/include/scrnintstr.h +++ b/include/scrnintstr.h @@ -347,6 +347,24 @@ typedef Bool (*SharePixmapBackingProcPtr)(PixmapPtr, ScreenPtr, void **); typedef Bool (*SetSharedPixmapBackingProcPtr)(PixmapPtr, void *); +#define HAS_SYNC_SHARED_PIXMAP 1 +/* The SyncSharedPixmap hook has two purposes: + * + * 1. If the master driver has it, the slave driver can use it to + * synchronize the shared pixmap contents with the screen pixmap. + * 2. If the slave driver has it, the master driver can expect the slave + * driver to call the master screen's SyncSharedPixmap hook, so the master + * driver doesn't have to synchronize the shared pixmap contents itself, + * e.g. from the BlockHandler. + * + * A driver must only set the hook if it handles both cases correctly. + * + * The argument is the slave screen's pixmap_dirty_list entry, the hook is + * responsible for finding the corresponding entry in the master screen's + * pixmap_dirty_list. + */ +typedef void (*SyncSharedPixmapProcPtr)(PixmapDirtyUpdatePtr); + typedef Bool (*StartPixmapTrackingProcPtr)(PixmapPtr, PixmapPtr, int x, int y, int dst_x, int dst_y, @@ -616,6 +634,7 @@ typedef struct _Screen { StartPixmapTrackingProcPtr StartPixmapTracking; StopPixmapTrackingProcPtr StopPixmapTracking; + SyncSharedPixmapProcPtr SyncSharedPixmap; SharedPixmapNotifyDamageProcPtr SharedPixmapNotifyDamage; RequestSharedPixmapNotifyDamageProcPtr RequestSharedPixmapNotifyDamage;