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