/*========================================================================== * * Copyright (C) 1994-1995 Microsoft Corporation. All Rights Reserved. * * File: ddsblto.c * Content: DirectDraw surface object blt order suport * History: * Date By Reason * ==== == ====== * 27-jan-95 craige split out of ddsurf.c * 31-jan-95 craige and even more ongoing work... * 27-feb-95 craige new sync. macros * 08-mar-95 craige new API: AddSurfaceDependency * 19-mar-95 craige use HRESULTs * 01-apr-95 craige happy fun joy updated header file * 06-may-95 craige use driver-level csects only * 16-jun-95 craige new surface structure * 21-jun-95 craige tweaks for new surface structs * 25-jun-95 craige one ddraw mutex * 26-jun-95 craige reorganized surface structure * 28-jun-95 craige commented out * ***************************************************************************/ #include "ddrawpr.h" #ifdef COMPOSITION /* * DD_SurfaceComposition_GetCompositionOrder */ HRESULT DDAPI DD_SurfaceComposition_GetCompositionOrder( LPDIRECTDRAWSURFACECOMPOSITION lpDDSurface, LPDWORD lpdwCompositionOrder ) { LPDDRAWI_DDRAWSURFACE_LCL thisx; LPDDRAWI_DDRAWSURFACE_GBL this; DPF(2,A,"ENTERAPI: DD_SurfaceComposition_GetCompositionOrder"); thisx = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSurface; if( !VALID_DIRECTDRAWSURFACE_PTR( thisx ) ) { return DDERR_INVALIDOBJECT; } if( !VALID_DWORD_PTR( lpdwCompositionOrder ) ) { return DDERR_INVALIDPARAMS; } this = thisx->lpGbl; ENTER_DDRAW(); if( SURFACE_LOST( thisx ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } // *lpdwCompositionOrder = this->dwCompositionOrder; LEAVE_DDRAW(); return DDERR_UNSUPPORTED; } /* DD_SurfaceComposition_GetCompositionOrder */ /* * DD_SurfaceComposition_SetCompositionOrder */ HRESULT DDAPI DD_SurfaceComposition_SetCompositionOrder( LPDIRECTDRAWSURFACECOMPOSITION lpDDSurface, DWORD dwCompositionOrder ) { LPDDRAWI_DDRAWSURFACE_LCL thisx; LPDDRAWI_DDRAWSURFACE_GBL this; DPF(2,A,"ENTERAPI: DD_SurfaceComposition_SetCompositionOrder"); thisx = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSurface; if( !VALID_DIRECTDRAWSURFACE_PTR( thisx ) ) { return DDERR_INVALIDOBJECT; } this = thisx->lpGbl; ENTER_DDRAW(); if( SURFACE_LOST( thisx ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } // this->dwCompositionOrder = dwCompositionOrder; LEAVE_DDRAW(); return DDERR_UNSUPPORTED; } /* DD_SurfaceComposition_SetCompositionOrder */ /* * DD_SurfaceComposition_DeleteSurfaceDependency */ HRESULT DDAPI DD_SurfaceComposition_DeleteSurfaceDependency( LPDIRECTDRAWSURFACECOMPOSITION lpDDSurface, DWORD dwFlagsForNoGoodReason, LPDIRECTDRAWSURFACE lpDDSurface2 ) { LPDDRAWI_DDRAWSURFACE_LCL thisx; LPDDRAWI_DDRAWSURFACE_GBL this; LPDDRAWI_DDRAWSURFACE_LCL this2x; LPDDRAWI_DDRAWSURFACE_GBL this2; DPF(2,A,"ENTERAPI: DD_SurfaceComposition_DeleteSurfaceDependency"); thisx = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSurface; if( !VALID_DIRECTDRAWSURFACE_PTR( thisx ) ) { return DDERR_INVALIDOBJECT; } this2x = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSurface2; if( !VALID_DIRECTDRAWSURFACE_PTR( this2x ) ) { return DDERR_INVALIDOBJECT; } this = thisx->lpGbl; this2 = this2x->lpGbl; ENTER_DDRAW(); if( SURFACE_LOST( thisx ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } if( SURFACE_LOST( this2x ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } LEAVE_DDRAW(); return DDERR_UNSUPPORTED; } /* DD_SurfaceComposition_DeleteSurfaceDependency */ /* * DD_SurfaceComposition_DestLock */ HRESULT DDAPI DD_SurfaceComposition_DestLock( LPDIRECTDRAWSURFACECOMPOSITION lpDDSurface ) { LPDDRAWI_DDRAWSURFACE_LCL thisx; LPDDRAWI_DDRAWSURFACE_GBL this; DPF(2,A,"ENTERAPI: DD_SurfaceComposition_DestLock"); thisx = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSurface; if( !VALID_DIRECTDRAWSURFACE_PTR( thisx ) ) { return DDERR_INVALIDOBJECT; } this = thisx->lpGbl; ENTER_DDRAW(); if( SURFACE_LOST( thisx ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } LEAVE_DDRAW(); return DDERR_UNSUPPORTED; } /* DD_SurfaceComposition_DestLock */ /* * DD_SurfaceComposition_DestUnlock */ HRESULT DDAPI DD_SurfaceComposition_DestUnlock( LPDIRECTDRAWSURFACECOMPOSITION lpDDSurface ) { LPDDRAWI_DDRAWSURFACE_LCL thisx; LPDDRAWI_DDRAWSURFACE_GBL this; DPF(2,A,"ENTERAPI: DD_SurfaceComposition_DestUnlock"); thisx = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSurface; if( !VALID_DIRECTDRAWSURFACE_PTR( thisx ) ) { return DDERR_INVALIDOBJECT; } this = thisx->lpGbl; ENTER_DDRAW(); if( SURFACE_LOST( thisx ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } LEAVE_DDRAW(); return DDERR_UNSUPPORTED; } /* DD_SurfaceComposition_DestUnlock */ /* * DD_SurfaceComposition_EnumSurfaceDependencies */ HRESULT DDAPI DD_SurfaceComposition_EnumSurfaceDependencies( LPDIRECTDRAWSURFACECOMPOSITION lpDDSurface, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback ) { LPDDRAWI_DDRAWSURFACE_LCL thisx; LPDDRAWI_DDRAWSURFACE_GBL this; DPF(2,A,"ENTERAPI: DD_SurfaceComposition_EnumSurfaceDependencies"); thisx = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSurface; if( !VALID_DIRECTDRAWSURFACE_PTR( thisx ) ) { return DDERR_INVALIDOBJECT; } if( !VALID_CODE_PTR( lpEnumSurfacesCallback ) ) { return DDERR_INVALIDPARAMS; } this = thisx->lpGbl; ENTER_DDRAW(); if( SURFACE_LOST( thisx ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } LEAVE_DDRAW(); return DDERR_UNSUPPORTED; } /* DD_SurfaceComposition_EnumSurfaceDependencies */ /* * DD_SurfaceComposition_SetSurfaceDependency */ HRESULT DDAPI DD_SurfaceComposition_SetSurfaceDependency( LPDIRECTDRAWSURFACECOMPOSITION lpDDSurface, LPDIRECTDRAWSURFACE lpDDSurface2 ) { LPDDRAWI_DDRAWSURFACE_LCL thisx; LPDDRAWI_DDRAWSURFACE_GBL this; LPDDRAWI_DDRAWSURFACE_LCL this2x; LPDDRAWI_DDRAWSURFACE_GBL this2; DPF(2,A,"ENTERAPI: DD_SurfaceComposition_SetSurfaceDependency"); thisx = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSurface; if( !VALID_DIRECTDRAWSURFACE_PTR( thisx ) ) { return DDERR_INVALIDOBJECT; } this2x = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSurface2; if( !VALID_DIRECTDRAWSURFACE_PTR( this2x ) ) { return DDERR_INVALIDOBJECT; } this = thisx->lpGbl; ENTER_DDRAW(); if( SURFACE_LOST( thisx ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } this2 = this2x->lpGbl; if( SURFACE_LOST( this2x ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } LEAVE_DDRAW(); return DDERR_UNSUPPORTED; } /* DD_SurfaceComposition_SetSurfaceDependency */ /* * DD_SurfaceComposition_AddSurfaceDependency */ HRESULT DDAPI DD_SurfaceComposition_AddSurfaceDependency( LPDIRECTDRAWSURFACECOMPOSITION lpDDSurface, LPDIRECTDRAWSURFACE lpDDSurfaceDep ) { LPDDRAWI_DDRAWSURFACE_LCL thisx; LPDDRAWI_DDRAWSURFACE_LCL this_depx; LPDDRAWI_DDRAWSURFACE_GBL this; LPDDRAWI_DDRAWSURFACE_GBL this_dep; DPF(2,A,"ENTERAPI: DD_SurfaceComposition_AddSurfaceDependency"); thisx = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSurface; this_depx = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSurfaceDep; if( !VALID_DIRECTDRAWSURFACE_PTR( thisx ) ) { return DDERR_INVALIDOBJECT; } if( !VALID_DIRECTDRAWSURFACE_PTR( this_depx ) ) { return DDERR_INVALIDOBJECT; } this = thisx->lpGbl; this_dep = this_depx->lpGbl; ENTER_DDRAW(); if( SURFACE_LOST( thisx ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } if( SURFACE_LOST( this_depx ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } LEAVE_DDRAW(); return DDERR_UNSUPPORTED; } /* DD_SurfaceComposition_AddSurfaceDependency */ #undef DPF_MODNAME #define DPF_MODNAME "Compose" /* * DD_SurfaceComposition_Compose */ HRESULT DDAPI DD_SurfaceComposition_Compose( LPDIRECTDRAWSURFACECOMPOSITION lpDDDestSurface, LPRECT lpDestRect, LPDIRECTDRAWSURFACE lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDCOMPOSEFX lpDDComposeFX ) { LPDDRAWI_DIRECTDRAW pdrv; LPDDRAWI_DDRAWSURFACE_LCL this_srcx; LPDDRAWI_DDRAWSURFACE_LCL this_destx; LPDDRAWI_DDRAWSURFACE_GBL this_src; LPDDRAWI_DDRAWSURFACE_GBL this_dest; DPF(2,A,"ENTERAPI: DD_SurfaceComposition_Compose"); this_destx = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDDestSurface; this_srcx = (LPDDRAWI_DDRAWSURFACE_LCL) lpDDSrcSurface; if( !VALID_DIRECTDRAWSURFACE_PTR( this_destx ) ) { DPF_ERR( "invalid dest specified") ; return DDERR_INVALIDOBJECT; } this_dest = this_destx->lpGbl; pdrv = this_dest->lpDD; ENTER_DDRAW(); if( this_srcx != NULL ) { if( !VALID_DIRECTDRAWSURFACE_PTR( this_srcx ) ) { DPF_ERR( "Invalid source specified" ); LEAVE_DDRAW(); return DDERR_INVALIDOBJECT; } this_src = this_srcx->lpGbl; if( SURFACE_LOST( this_srcx ) ) { LEAVE_DDRAW(); return DDERR_SURFACELOST; } } else { this_src = NULL; } LEAVE_DDRAW(); return DDERR_UNSUPPORTED; } /* DD_SurfaceComposition_Compose */ #endif