cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef _SHADOWFB_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define _SHADOWFB_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "xf86str.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * User defined callback function. Passed a pointer to the ScrnInfo struct,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * the number of dirty rectangles, and a pointer to the first dirty rectangle
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * in the array.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef void (*RefreshAreaFuncPtr)(ScrnInfoPtr, int, BoxPtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * ShadowFBInit initializes the shadowfb subsystem. refreshArea is a pointer
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * to a user supplied callback function. This function will be called after
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * any operation that modifies the framebuffer. The newly dirtied rectangles
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * are passed to the callback.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Returns FALSE in the event of an error.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT Bool
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncShadowFBInit (
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ScreenPtr pScreen,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync RefreshAreaFuncPtr refreshArea
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * ShadowFBInit2 is a more featureful refinement of the original shadowfb.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * ShadowFBInit2 allows you to specify two callbacks, one to be called
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * immediately before an operation that modifies the framebuffer, and another
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * to be called immediately after.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Returns FALSE in the event of an error
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT Bool
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncShadowFBInit2 (
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ScreenPtr pScreen,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync RefreshAreaFuncPtr preRefreshArea,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync RefreshAreaFuncPtr postRefreshArea
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* _SHADOWFB_H */