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