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