b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* $XFree86: xc/programs/Xserver/hw/xfree86/shadowfb/shadowfb.h,v 1.3 2002/10/16 22:12:54 alanh Exp $ */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifndef _SHADOWFB_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define _SHADOWFB_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "xf86str.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * User defined callback function. Passed a pointer to the ScrnInfo struct,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * the number of dirty rectangles, and a pointer to the first dirty rectangle
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * in the array.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef void (*RefreshAreaFuncPtr)(ScrnInfoPtr, int, BoxPtr);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * ShadowFBInit initializes the shadowfb subsystem. refreshArea is a pointer
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * to a user supplied callback function. This function will be called after
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * any operation that modifies the framebuffer. The newly dirtied rectangles
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * are passed to the callback.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Returns FALSE in the event of an error.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBool
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncShadowFBInit (
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ScreenPtr pScreen,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RefreshAreaFuncPtr refreshArea
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * ShadowFBInit2 is a more featureful refinement of the original shadowfb.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * ShadowFBInit2 allows you to specify two callbacks, one to be called
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * immediately before an operation that modifies the framebuffer, and another
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * to be called immediately after.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Returns FALSE in the event of an error
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBool
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncShadowFBInit2 (
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ScreenPtr pScreen,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RefreshAreaFuncPtr preRefreshArea,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RefreshAreaFuncPtr postRefreshArea
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif /* _SHADOWFB_H */