diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2008-05-04 13:45:27 -0700 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2008-05-12 14:49:53 -0700 |
commit | c50b5d978981b13cdb22a9ad41c1b64f90cebe51 (patch) | |
tree | 2335e197fc8431365e3a341830e38016db044cd7 /Xext/panoramiXsrv.h | |
parent | 86678e7cc2b021851ff508433fa160170f500c51 (diff) |
Bug #14692: Allow drivers to have a say in Xinerama visual consolidation.
Create a new exported global variable, XineramaVisualsEqualPtr. Use this
pointer to decide whether two visuals are equal during visual consolidation.
This pointer can be wrapped, which allows drivers and extensions to control
which visuals are consolidated. A wrapper can reject the visuals without
calling down, but must call down and return that result if it deems the visuals
equal. This ensures that all layers agree that the visuals are equal.
Pass the screen of the other visual into the VisualsEqual callchain.
Don't free PanoramiXVisuals since we need it for PanoramiXTranslateVisualID.
Don't skip the first visual on the other screen in PanoramiXMaybeAddVisual.
Skip the loop in PanoramiXTranslateVisualID if screen is 0.
Diffstat (limited to 'Xext/panoramiXsrv.h')
-rw-r--r-- | Xext/panoramiXsrv.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Xext/panoramiXsrv.h b/Xext/panoramiXsrv.h index 6d556e963..d5c3d9827 100644 --- a/Xext/panoramiXsrv.h +++ b/Xext/panoramiXsrv.h @@ -30,6 +30,16 @@ extern unsigned long XRT_PIXMAP; extern unsigned long XRT_GC; extern unsigned long XRT_COLORMAP; +/* + * Drivers are allowed to wrap this function. Each wrapper can decide that the + * two visuals are unequal, but if they are deemed equal, the wrapper must call + * down and return FALSE if the wrapped function does. This ensures that all + * layers agree that the visuals are equal. The first visual is always from + * screen 0. + */ +typedef Bool (*XineramaVisualsEqualProcPtr)(VisualPtr, ScreenPtr, VisualPtr); +extern XineramaVisualsEqualProcPtr XineramaVisualsEqualPtr; + extern void XineramaGetImageData( DrawablePtr *pDrawables, int left, |