105b261ecSmrg
205b261ecSmrg#ifndef _SHADOWFB_H
305b261ecSmrg#define _SHADOWFB_H
405b261ecSmrg
505b261ecSmrg#include "xf86str.h"
605b261ecSmrg
705b261ecSmrg/*
805b261ecSmrg * User defined callback function.  Passed a pointer to the ScrnInfo struct,
905b261ecSmrg * the number of dirty rectangles, and a pointer to the first dirty rectangle
1005b261ecSmrg * in the array.
1105b261ecSmrg */
1235c4bbdfSmrgtypedef void (*RefreshAreaFuncPtr) (ScrnInfoPtr, int, BoxPtr);
1305b261ecSmrg
1405b261ecSmrg/*
1505b261ecSmrg * ShadowFBInit initializes the shadowfb subsystem.  refreshArea is a pointer
1605b261ecSmrg * to a user supplied callback function.  This function will be called after
1705b261ecSmrg * any operation that modifies the framebuffer.  The newly dirtied rectangles
1805b261ecSmrg * are passed to the callback.
1905b261ecSmrg *
2005b261ecSmrg * Returns FALSE in the event of an error.
2105b261ecSmrg */
226747b715Smrgextern _X_EXPORT Bool
2335c4bbdfSmrg ShadowFBInit(ScreenPtr pScreen, RefreshAreaFuncPtr refreshArea);
2405b261ecSmrg
2505b261ecSmrg/*
2605b261ecSmrg * ShadowFBInit2 is a more featureful refinement of the original shadowfb.
2705b261ecSmrg * ShadowFBInit2 allows you to specify two callbacks, one to be called
2805b261ecSmrg * immediately before an operation that modifies the framebuffer, and another
2935c4bbdfSmrg * to be called immediately after.
3005b261ecSmrg *
3105b261ecSmrg * Returns FALSE in the event of an error
3205b261ecSmrg */
336747b715Smrgextern _X_EXPORT Bool
3405b261ecSmrg
3535c4bbdfSmrgShadowFBInit2(ScreenPtr pScreen,
3635c4bbdfSmrg              RefreshAreaFuncPtr preRefreshArea,
3735c4bbdfSmrg              RefreshAreaFuncPtr postRefreshArea);
3835c4bbdfSmrg
3935c4bbdfSmrg#endif                          /* _SHADOWFB_H */
40