1706f2543Smrg
2706f2543Smrg#ifndef _SHADOWFB_H
3706f2543Smrg#define _SHADOWFB_H
4706f2543Smrg
5706f2543Smrg#include "xf86str.h"
6706f2543Smrg
7706f2543Smrg/*
8706f2543Smrg * User defined callback function.  Passed a pointer to the ScrnInfo struct,
9706f2543Smrg * the number of dirty rectangles, and a pointer to the first dirty rectangle
10706f2543Smrg * in the array.
11706f2543Smrg */
12706f2543Smrgtypedef void (*RefreshAreaFuncPtr)(ScrnInfoPtr, int, BoxPtr);
13706f2543Smrg
14706f2543Smrg/*
15706f2543Smrg * ShadowFBInit initializes the shadowfb subsystem.  refreshArea is a pointer
16706f2543Smrg * to a user supplied callback function.  This function will be called after
17706f2543Smrg * any operation that modifies the framebuffer.  The newly dirtied rectangles
18706f2543Smrg * are passed to the callback.
19706f2543Smrg *
20706f2543Smrg * Returns FALSE in the event of an error.
21706f2543Smrg */
22706f2543Smrgextern _X_EXPORT Bool
23706f2543SmrgShadowFBInit (
24706f2543Smrg    ScreenPtr		pScreen,
25706f2543Smrg    RefreshAreaFuncPtr  refreshArea
26706f2543Smrg);
27706f2543Smrg
28706f2543Smrg/*
29706f2543Smrg * ShadowFBInit2 is a more featureful refinement of the original shadowfb.
30706f2543Smrg * ShadowFBInit2 allows you to specify two callbacks, one to be called
31706f2543Smrg * immediately before an operation that modifies the framebuffer, and another
32706f2543Smrg * to be called immediately after.
33706f2543Smrg *
34706f2543Smrg * Returns FALSE in the event of an error
35706f2543Smrg */
36706f2543Smrgextern _X_EXPORT Bool
37706f2543SmrgShadowFBInit2 (
38706f2543Smrg    ScreenPtr		pScreen,
39706f2543Smrg    RefreshAreaFuncPtr  preRefreshArea,
40706f2543Smrg    RefreshAreaFuncPtr  postRefreshArea
41706f2543Smrg);
42706f2543Smrg
43706f2543Smrg#endif /* _SHADOWFB_H */
44