|
|
/******************************Module*Header*******************************\
* Module Name: devlock.h * * Created: 12-Apr-1994 19:45:42 * Author: Gilman Wong [gilmanw] * * Copyright (c) 1994 Microsoft Corporation \**************************************************************************/
// Engine helper functions to grab/release display semaphore and to
// teardown/restore the cursor.
extern BOOL APIENTRY glsrvGrabLock(__GLGENcontext *gengc); extern VOID APIENTRY glsrvReleaseLock(__GLGENcontext *gengc);
extern BOOL APIENTRY glsrvGrabSurfaces(__GLGENcontext *gengc, GLGENwindow *pwnd, FSHORT surfBits); extern VOID APIENTRY glsrvReleaseSurfaces(__GLGENcontext *gengc, GLGENwindow *pwnd, FSHORT surfBits); extern void APIENTRY glsrvSynchronizeWithGdi(__GLGENcontext *gengc, GLGENwindow *pwnd, FSHORT surfBits); extern void APIENTRY glsrvDecoupleFromGdi(__GLGENcontext *gengc, GLGENwindow *pwnd, FSHORT surfBits);
/******************************Public*Routine******************************\
* * glsrvLazyGrabSurfaces * * Indicates a need for all surfaces whose bits are set in the flags * word. If the locking code determined that a lock was needed for * that surface and the lock isn't currently held, the lock is taken. * * History: * Fri May 30 18:17:27 1997 -by- Gilman Wong [gilmanw] * Created * \**************************************************************************/
__inline BOOL glsrvLazyGrabSurfaces(__GLGENcontext *gengc, FSHORT surfBits) { BOOL bRet = TRUE;
if (((gengc->fsGenLocks ^ gengc->fsLocks) & surfBits) != 0) { bRet = glsrvGrabSurfaces(gengc, gengc->pwndLocked, surfBits); }
return bRet; }
//
// Provide wrappers for DirectDraw surface locking and unlocking so
// that lock tracking can be done on debug builds.
//
// #define VERBOSE_DDSLOCK
#if !defined(DBG) || !defined(VERBOSE_DDSLOCK)
#define DDSLOCK(pdds, pddsd, flags, prect) \
((pdds)->lpVtbl->Lock((pdds), (prect), (pddsd), (flags), NULL)) #define DDSUNLOCK(pdds, ptr) \
((pdds)->lpVtbl->Unlock((pdds), (ptr))) #else
HRESULT dbgDdsLock(LPDIRECTDRAWSURFACE pdds, DDSURFACEDESC *pddsd, DWORD flags, char *file, int line); HRESULT dbgDdsUnlock(LPDIRECTDRAWSURFACE pdds, void *ptr, char *file, int line); #define DDSLOCK(pdds, pddsd, flags, prect) \
dbgDdsLock(pdds, pddsd, flags, __FILE__, __LINE__) #define DDSUNLOCK(pdds, ptr) \
dbgDdsUnlock(pdds, ptr, __FILE__, __LINE__) #endif
extern DWORD gcmsOpenGLTimer;
//#define BATCH_LOCK_TICKMAX 99
//#define TICK_RANGE_LO 60
//#define TICK_RANGE_HI 100
extern DWORD BATCH_LOCK_TICKMAX; extern DWORD TICK_RANGE_LO; extern DWORD TICK_RANGE_HI;
#define GENERIC_BACKBUFFER_ONLY(gc) \
( ((gc)->state.raster.drawBuffer == GL_BACK ) &&\ ((gc)->state.pixel.readBuffer == GL_BACK ) )
|