Path: blob/21.2-virgl/src/gallium/frontends/nine/nine_lock.c
4561 views
/*1* Copyright 2013 Joakim Sindholt <[email protected]>2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* on the rights to use, copy, modify, merge, publish, distribute, sub7* license, and/or sell copies of the Software, and to permit persons to whom8* the Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice (including the next11* paragraph) shall be included in all copies or substantial portions of the12* Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL17* THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,18* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR19* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE20* USE OR OTHER DEALINGS IN THE SOFTWARE. */2122#include "authenticatedchannel9.h"23#include "basetexture9.h"24#include "cryptosession9.h"25#include "cubetexture9.h"26#include "device9.h"27#include "device9ex.h"28#include "device9video.h"29#include "indexbuffer9.h"30#include "pixelshader9.h"31#include "query9.h"32#include "resource9.h"33#include "stateblock9.h"34#include "surface9.h"35#include "swapchain9.h"36#include "swapchain9ex.h"37#include "texture9.h"38#include "vertexbuffer9.h"39#include "vertexdeclaration9.h"40#include "vertexshader9.h"41#include "volume9.h"42#include "volumetexture9.h"4344#include "d3d9.h"45#include "nine_lock.h"4647#include "os/os_thread.h"4849/* Global mutex as described by MSDN */50static mtx_t d3dlock_global = _MTX_INITIALIZER_NP;5152void53NineLockGlobalMutex()54{55mtx_lock(&d3dlock_global);56}5758void59NineUnlockGlobalMutex()60{61mtx_unlock(&d3dlock_global);62}6364static HRESULT NINE_WINAPI65LockAuthenticatedChannel9_GetCertificateSize( struct NineAuthenticatedChannel9 *This,66UINT *pCertificateSize )67{68HRESULT r;69mtx_lock(&d3dlock_global);70r = NineAuthenticatedChannel9_GetCertificateSize(This, pCertificateSize);71mtx_unlock(&d3dlock_global);72return r;73}7475static HRESULT NINE_WINAPI76LockAuthenticatedChannel9_GetCertificate( struct NineAuthenticatedChannel9 *This,77UINT CertifacteSize,78BYTE *ppCertificate )79{80HRESULT r;81mtx_lock(&d3dlock_global);82r = NineAuthenticatedChannel9_GetCertificate(This, CertifacteSize, ppCertificate);83mtx_unlock(&d3dlock_global);84return r;85}8687static HRESULT NINE_WINAPI88LockAuthenticatedChannel9_NegotiateKeyExchange( struct NineAuthenticatedChannel9 *This,89UINT DataSize,90void *pData )91{92HRESULT r;93mtx_lock(&d3dlock_global);94r = NineAuthenticatedChannel9_NegotiateKeyExchange(This, DataSize, pData);95mtx_unlock(&d3dlock_global);96return r;97}9899static HRESULT NINE_WINAPI100LockAuthenticatedChannel9_Query( struct NineAuthenticatedChannel9 *This,101UINT InputSize,102const void *pInput,103UINT OutputSize,104void *pOutput )105{106HRESULT r;107mtx_lock(&d3dlock_global);108r = NineAuthenticatedChannel9_Query(This, InputSize, pInput, OutputSize, pOutput);109mtx_unlock(&d3dlock_global);110return r;111}112113static HRESULT NINE_WINAPI114LockAuthenticatedChannel9_Configure( struct NineAuthenticatedChannel9 *This,115UINT InputSize,116const void *pInput,117D3DAUTHENTICATEDCHANNEL_CONFIGURE_OUTPUT *pOutput )118{119HRESULT r;120mtx_lock(&d3dlock_global);121r = NineAuthenticatedChannel9_Configure(This, InputSize, pInput, pOutput);122mtx_unlock(&d3dlock_global);123return r;124}125126IDirect3DAuthenticatedChannel9Vtbl LockAuthenticatedChannel9_vtable = {127(void *)NineUnknown_QueryInterface,128(void *)NineUnknown_AddRef,129(void *)NineUnknown_ReleaseWithDtorLock,130(void *)LockAuthenticatedChannel9_GetCertificateSize,131(void *)LockAuthenticatedChannel9_GetCertificate,132(void *)LockAuthenticatedChannel9_NegotiateKeyExchange,133(void *)LockAuthenticatedChannel9_Query,134(void *)LockAuthenticatedChannel9_Configure135};136137static HRESULT NINE_WINAPI138LockUnknown_SetPrivateData( struct NineUnknown *This,139REFGUID refguid,140const void *pData,141DWORD SizeOfData,142DWORD Flags )143{144HRESULT r;145mtx_lock(&d3dlock_global);146r = NineUnknown_SetPrivateData(This, refguid, pData, SizeOfData, Flags);147mtx_unlock(&d3dlock_global);148return r;149}150151static HRESULT NINE_WINAPI152LockUnknown_GetPrivateData( struct NineUnknown *This,153REFGUID refguid,154void *pData,155DWORD *pSizeOfData )156{157HRESULT r;158mtx_lock(&d3dlock_global);159r = NineUnknown_GetPrivateData(This, refguid, pData, pSizeOfData);160mtx_unlock(&d3dlock_global);161return r;162}163164static HRESULT NINE_WINAPI165LockUnknown_FreePrivateData( struct NineUnknown *This,166REFGUID refguid )167{168HRESULT r;169mtx_lock(&d3dlock_global);170r = NineUnknown_FreePrivateData(This, refguid);171mtx_unlock(&d3dlock_global);172return r;173}174175#if 0176static HRESULT NINE_WINAPI177LockResource9_GetDevice( struct NineResource9 *This,178IDirect3DDevice9 **ppDevice )179{180HRESULT r;181mtx_lock(&d3dlock_global);182r = NineUnknown_GetDevice(NineUnknown(This), ppDevice);183mtx_unlock(&d3dlock_global);184return r;185}186#endif187188static DWORD NINE_WINAPI189LockResource9_SetPriority( struct NineResource9 *This,190DWORD PriorityNew )191{192DWORD r;193mtx_lock(&d3dlock_global);194r = NineResource9_SetPriority(This, PriorityNew);195mtx_unlock(&d3dlock_global);196return r;197}198199static DWORD NINE_WINAPI200LockResource9_GetPriority( struct NineResource9 *This )201{202DWORD r;203mtx_lock(&d3dlock_global);204r = NineResource9_GetPriority(This);205mtx_unlock(&d3dlock_global);206return r;207}208209#if 0210static void NINE_WINAPI211LockResource9_PreLoad( struct NineResource9 *This )212{213mtx_lock(&d3dlock_global);214NineResource9_PreLoad(This);215mtx_unlock(&d3dlock_global);216}217#endif218219#if 0220static D3DRESOURCETYPE NINE_WINAPI221LockResource9_GetType( struct NineResource9 *This )222{223D3DRESOURCETYPE r;224mtx_lock(&d3dlock_global);225r = NineResource9_GetType(This);226mtx_unlock(&d3dlock_global);227return r;228}229#endif230231static DWORD NINE_WINAPI232LockBaseTexture9_SetLOD( struct NineBaseTexture9 *This,233DWORD LODNew )234{235DWORD r;236mtx_lock(&d3dlock_global);237r = NineBaseTexture9_SetLOD(This, LODNew);238mtx_unlock(&d3dlock_global);239return r;240}241242static DWORD NINE_WINAPI243LockBaseTexture9_GetLOD( struct NineBaseTexture9 *This )244{245DWORD r;246mtx_lock(&d3dlock_global);247r = NineBaseTexture9_GetLOD(This);248mtx_unlock(&d3dlock_global);249return r;250}251252static DWORD NINE_WINAPI253LockBaseTexture9_GetLevelCount( struct NineBaseTexture9 *This )254{255DWORD r;256mtx_lock(&d3dlock_global);257r = NineBaseTexture9_GetLevelCount(This);258mtx_unlock(&d3dlock_global);259return r;260}261262static HRESULT NINE_WINAPI263LockBaseTexture9_SetAutoGenFilterType( struct NineBaseTexture9 *This,264D3DTEXTUREFILTERTYPE FilterType )265{266HRESULT r;267mtx_lock(&d3dlock_global);268r = NineBaseTexture9_SetAutoGenFilterType(This, FilterType);269mtx_unlock(&d3dlock_global);270return r;271}272273static D3DTEXTUREFILTERTYPE NINE_WINAPI274LockBaseTexture9_GetAutoGenFilterType( struct NineBaseTexture9 *This )275{276D3DTEXTUREFILTERTYPE r;277mtx_lock(&d3dlock_global);278r = NineBaseTexture9_GetAutoGenFilterType(This);279mtx_unlock(&d3dlock_global);280return r;281}282283static void NINE_WINAPI284LockBaseTexture9_PreLoad( struct NineBaseTexture9 *This )285{286mtx_lock(&d3dlock_global);287NineBaseTexture9_PreLoad(This);288mtx_unlock(&d3dlock_global);289}290291static void NINE_WINAPI292LockBaseTexture9_GenerateMipSubLevels( struct NineBaseTexture9 *This )293{294mtx_lock(&d3dlock_global);295NineBaseTexture9_GenerateMipSubLevels(This);296mtx_unlock(&d3dlock_global);297}298299static HRESULT NINE_WINAPI300LockCryptoSession9_GetCertificateSize( struct NineCryptoSession9 *This,301UINT *pCertificateSize )302{303HRESULT r;304mtx_lock(&d3dlock_global);305r = NineCryptoSession9_GetCertificateSize(This, pCertificateSize);306mtx_unlock(&d3dlock_global);307return r;308}309310static HRESULT NINE_WINAPI311LockCryptoSession9_GetCertificate( struct NineCryptoSession9 *This,312UINT CertifacteSize,313BYTE *ppCertificate )314{315HRESULT r;316mtx_lock(&d3dlock_global);317r = NineCryptoSession9_GetCertificate(This, CertifacteSize, ppCertificate);318mtx_unlock(&d3dlock_global);319return r;320}321322static HRESULT NINE_WINAPI323LockCryptoSession9_NegotiateKeyExchange( struct NineCryptoSession9 *This,324UINT DataSize,325void *pData )326{327HRESULT r;328mtx_lock(&d3dlock_global);329r = NineCryptoSession9_NegotiateKeyExchange(This, DataSize, pData);330mtx_unlock(&d3dlock_global);331return r;332}333334static HRESULT NINE_WINAPI335LockCryptoSession9_EncryptionBlt( struct NineCryptoSession9 *This,336IDirect3DSurface9 *pSrcSurface,337IDirect3DSurface9 *pDstSurface,338UINT DstSurfaceSize,339void *pIV )340{341HRESULT r;342mtx_lock(&d3dlock_global);343r = NineCryptoSession9_EncryptionBlt(This, pSrcSurface, pDstSurface, DstSurfaceSize, pIV);344mtx_unlock(&d3dlock_global);345return r;346}347348static HRESULT NINE_WINAPI349LockCryptoSession9_DecryptionBlt( struct NineCryptoSession9 *This,350IDirect3DSurface9 *pSrcSurface,351IDirect3DSurface9 *pDstSurface,352UINT SrcSurfaceSize,353D3DENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo,354void *pContentKey,355void *pIV )356{357HRESULT r;358mtx_lock(&d3dlock_global);359r = NineCryptoSession9_DecryptionBlt(This, pSrcSurface, pDstSurface, SrcSurfaceSize, pEncryptedBlockInfo, pContentKey, pIV);360mtx_unlock(&d3dlock_global);361return r;362}363364static HRESULT NINE_WINAPI365LockCryptoSession9_GetSurfacePitch( struct NineCryptoSession9 *This,366IDirect3DSurface9 *pSrcSurface,367UINT *pSurfacePitch )368{369HRESULT r;370mtx_lock(&d3dlock_global);371r = NineCryptoSession9_GetSurfacePitch(This, pSrcSurface, pSurfacePitch);372mtx_unlock(&d3dlock_global);373return r;374}375376static HRESULT NINE_WINAPI377LockCryptoSession9_StartSessionKeyRefresh( struct NineCryptoSession9 *This,378void *pRandomNumber,379UINT RandomNumberSize )380{381HRESULT r;382mtx_lock(&d3dlock_global);383r = NineCryptoSession9_StartSessionKeyRefresh(This, pRandomNumber, RandomNumberSize);384mtx_unlock(&d3dlock_global);385return r;386}387388static HRESULT NINE_WINAPI389LockCryptoSession9_FinishSessionKeyRefresh( struct NineCryptoSession9 *This )390{391HRESULT r;392mtx_lock(&d3dlock_global);393r = NineCryptoSession9_FinishSessionKeyRefresh(This);394mtx_unlock(&d3dlock_global);395return r;396}397398static HRESULT NINE_WINAPI399LockCryptoSession9_GetEncryptionBltKey( struct NineCryptoSession9 *This,400void *pReadbackKey,401UINT KeySize )402{403HRESULT r;404mtx_lock(&d3dlock_global);405r = NineCryptoSession9_GetEncryptionBltKey(This, pReadbackKey, KeySize);406mtx_unlock(&d3dlock_global);407return r;408}409410IDirect3DCryptoSession9Vtbl LockCryptoSession9_vtable = {411(void *)NineUnknown_QueryInterface,412(void *)NineUnknown_AddRef,413(void *)NineUnknown_ReleaseWithDtorLock,414(void *)LockCryptoSession9_GetCertificateSize,415(void *)LockCryptoSession9_GetCertificate,416(void *)LockCryptoSession9_NegotiateKeyExchange,417(void *)LockCryptoSession9_EncryptionBlt,418(void *)LockCryptoSession9_DecryptionBlt,419(void *)LockCryptoSession9_GetSurfacePitch,420(void *)LockCryptoSession9_StartSessionKeyRefresh,421(void *)LockCryptoSession9_FinishSessionKeyRefresh,422(void *)LockCryptoSession9_GetEncryptionBltKey423};424425#if 0426static HRESULT NINE_WINAPI427LockCubeTexture9_GetLevelDesc( struct NineCubeTexture9 *This,428UINT Level,429D3DSURFACE_DESC *pDesc )430{431HRESULT r;432mtx_lock(&d3dlock_global);433r = NineCubeTexture9_GetLevelDesc(This, Level, pDesc);434mtx_unlock(&d3dlock_global);435return r;436}437#endif438439#if 0440static HRESULT NINE_WINAPI441LockCubeTexture9_GetCubeMapSurface( struct NineCubeTexture9 *This,442D3DCUBEMAP_FACES FaceType,443UINT Level,444IDirect3DSurface9 **ppCubeMapSurface )445{446HRESULT r;447mtx_lock(&d3dlock_global);448r = NineCubeTexture9_GetCubeMapSurface(This, FaceType, Level, ppCubeMapSurface);449mtx_unlock(&d3dlock_global);450return r;451}452#endif453454static HRESULT NINE_WINAPI455LockCubeTexture9_LockRect( struct NineCubeTexture9 *This,456D3DCUBEMAP_FACES FaceType,457UINT Level,458D3DLOCKED_RECT *pLockedRect,459const RECT *pRect,460DWORD Flags )461{462HRESULT r;463mtx_lock(&d3dlock_global);464r = NineCubeTexture9_LockRect(This, FaceType, Level, pLockedRect, pRect, Flags);465mtx_unlock(&d3dlock_global);466return r;467}468469static HRESULT NINE_WINAPI470LockCubeTexture9_UnlockRect( struct NineCubeTexture9 *This,471D3DCUBEMAP_FACES FaceType,472UINT Level )473{474HRESULT r;475mtx_lock(&d3dlock_global);476r = NineCubeTexture9_UnlockRect(This, FaceType, Level);477mtx_unlock(&d3dlock_global);478return r;479}480481static HRESULT NINE_WINAPI482LockCubeTexture9_AddDirtyRect( struct NineCubeTexture9 *This,483D3DCUBEMAP_FACES FaceType,484const RECT *pDirtyRect )485{486HRESULT r;487mtx_lock(&d3dlock_global);488r = NineCubeTexture9_AddDirtyRect(This, FaceType, pDirtyRect);489mtx_unlock(&d3dlock_global);490return r;491}492493IDirect3DCubeTexture9Vtbl LockCubeTexture9_vtable = {494(void *)NineUnknown_QueryInterface,495(void *)NineUnknown_AddRef,496(void *)NineUnknown_ReleaseWithDtorLock,497(void *)NineUnknown_GetDevice, /* actually part of Resource9 iface */498(void *)LockUnknown_SetPrivateData,499(void *)LockUnknown_GetPrivateData,500(void *)LockUnknown_FreePrivateData,501(void *)LockResource9_SetPriority,502(void *)LockResource9_GetPriority,503(void *)LockBaseTexture9_PreLoad,504(void *)NineResource9_GetType, /* immutable */505(void *)LockBaseTexture9_SetLOD,506(void *)LockBaseTexture9_GetLOD,507(void *)LockBaseTexture9_GetLevelCount,508(void *)LockBaseTexture9_SetAutoGenFilterType,509(void *)LockBaseTexture9_GetAutoGenFilterType,510(void *)LockBaseTexture9_GenerateMipSubLevels,511(void *)NineCubeTexture9_GetLevelDesc, /* immutable */512(void *)NineCubeTexture9_GetCubeMapSurface, /* AddRef */513(void *)LockCubeTexture9_LockRect,514(void *)LockCubeTexture9_UnlockRect,515(void *)LockCubeTexture9_AddDirtyRect516};517518static HRESULT NINE_WINAPI519LockDevice9_TestCooperativeLevel( struct NineDevice9 *This )520{521HRESULT r;522mtx_lock(&d3dlock_global);523r = NineDevice9_TestCooperativeLevel(This);524mtx_unlock(&d3dlock_global);525return r;526}527528static UINT NINE_WINAPI529LockDevice9_GetAvailableTextureMem( struct NineDevice9 *This )530{531UINT r;532mtx_lock(&d3dlock_global);533r = NineDevice9_GetAvailableTextureMem(This);534mtx_unlock(&d3dlock_global);535return r;536}537538static HRESULT NINE_WINAPI539LockDevice9_EvictManagedResources( struct NineDevice9 *This )540{541HRESULT r;542mtx_lock(&d3dlock_global);543r = NineDevice9_EvictManagedResources(This);544mtx_unlock(&d3dlock_global);545return r;546}547548static HRESULT NINE_WINAPI549LockDevice9_GetDirect3D( struct NineDevice9 *This,550IDirect3D9 **ppD3D9 )551{552HRESULT r;553mtx_lock(&d3dlock_global);554r = NineDevice9_GetDirect3D(This, ppD3D9);555mtx_unlock(&d3dlock_global);556return r;557}558559#if 0560static HRESULT NINE_WINAPI561LockDevice9_GetDeviceCaps( struct NineDevice9 *This,562D3DCAPS9 *pCaps )563{564HRESULT r;565mtx_lock(&d3dlock_global);566r = NineDevice9_GetDeviceCaps(This, pCaps);567mtx_unlock(&d3dlock_global);568return r;569}570#endif571572static HRESULT NINE_WINAPI573LockDevice9_GetDisplayMode( struct NineDevice9 *This,574UINT iSwapChain,575D3DDISPLAYMODE *pMode )576{577HRESULT r;578mtx_lock(&d3dlock_global);579r = NineDevice9_GetDisplayMode(This, iSwapChain, pMode);580mtx_unlock(&d3dlock_global);581return r;582}583584#if 0585static HRESULT NINE_WINAPI586LockDevice9_GetCreationParameters( struct NineDevice9 *This,587D3DDEVICE_CREATION_PARAMETERS *pParameters )588{589HRESULT r;590mtx_lock(&d3dlock_global);591r = NineDevice9_GetCreationParameters(This, pParameters);592mtx_unlock(&d3dlock_global);593return r;594}595#endif596597static HRESULT NINE_WINAPI598LockDevice9_SetCursorProperties( struct NineDevice9 *This,599UINT XHotSpot,600UINT YHotSpot,601IDirect3DSurface9 *pCursorBitmap )602{603HRESULT r;604mtx_lock(&d3dlock_global);605r = NineDevice9_SetCursorProperties(This, XHotSpot, YHotSpot, pCursorBitmap);606mtx_unlock(&d3dlock_global);607return r;608}609610static void NINE_WINAPI611LockDevice9_SetCursorPosition( struct NineDevice9 *This,612int X,613int Y,614DWORD Flags )615{616mtx_lock(&d3dlock_global);617NineDevice9_SetCursorPosition(This, X, Y, Flags);618mtx_unlock(&d3dlock_global);619}620621static BOOL NINE_WINAPI622LockDevice9_ShowCursor( struct NineDevice9 *This,623BOOL bShow )624{625BOOL r;626mtx_lock(&d3dlock_global);627r = NineDevice9_ShowCursor(This, bShow);628mtx_unlock(&d3dlock_global);629return r;630}631632static HRESULT NINE_WINAPI633LockDevice9_CreateAdditionalSwapChain( struct NineDevice9 *This,634D3DPRESENT_PARAMETERS *pPresentationParameters,635IDirect3DSwapChain9 **pSwapChain )636{637HRESULT r;638mtx_lock(&d3dlock_global);639r = NineDevice9_CreateAdditionalSwapChain(This, pPresentationParameters, pSwapChain);640mtx_unlock(&d3dlock_global);641return r;642}643644static HRESULT NINE_WINAPI645LockDevice9_GetSwapChain( struct NineDevice9 *This,646UINT iSwapChain,647IDirect3DSwapChain9 **pSwapChain )648{649HRESULT r;650mtx_lock(&d3dlock_global);651r = NineDevice9_GetSwapChain(This, iSwapChain, pSwapChain);652mtx_unlock(&d3dlock_global);653return r;654}655656static UINT NINE_WINAPI657LockDevice9_GetNumberOfSwapChains( struct NineDevice9 *This )658{659UINT r;660mtx_lock(&d3dlock_global);661r = NineDevice9_GetNumberOfSwapChains(This);662mtx_unlock(&d3dlock_global);663return r;664}665666static HRESULT NINE_WINAPI667LockDevice9_Reset( struct NineDevice9 *This,668D3DPRESENT_PARAMETERS *pPresentationParameters )669{670HRESULT r;671mtx_lock(&d3dlock_global);672r = NineDevice9_Reset(This, pPresentationParameters);673mtx_unlock(&d3dlock_global);674return r;675}676677static HRESULT NINE_WINAPI678LockDevice9_Present( struct NineDevice9 *This,679const RECT *pSourceRect,680const RECT *pDestRect,681HWND hDestWindowOverride,682const RGNDATA *pDirtyRegion )683{684HRESULT r;685mtx_lock(&d3dlock_global);686r = NineDevice9_Present(This, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);687mtx_unlock(&d3dlock_global);688return r;689}690691static HRESULT NINE_WINAPI692LockDevice9_GetBackBuffer( struct NineDevice9 *This,693UINT iSwapChain,694UINT iBackBuffer,695D3DBACKBUFFER_TYPE Type,696IDirect3DSurface9 **ppBackBuffer )697{698HRESULT r;699mtx_lock(&d3dlock_global);700r = NineDevice9_GetBackBuffer(This, iSwapChain, iBackBuffer, Type, ppBackBuffer);701mtx_unlock(&d3dlock_global);702return r;703}704705static HRESULT NINE_WINAPI706LockDevice9_GetRasterStatus( struct NineDevice9 *This,707UINT iSwapChain,708D3DRASTER_STATUS *pRasterStatus )709{710HRESULT r;711mtx_lock(&d3dlock_global);712r = NineDevice9_GetRasterStatus(This, iSwapChain, pRasterStatus);713mtx_unlock(&d3dlock_global);714return r;715}716717static HRESULT NINE_WINAPI718LockDevice9_SetDialogBoxMode( struct NineDevice9 *This,719BOOL bEnableDialogs )720{721HRESULT r;722mtx_lock(&d3dlock_global);723r = NineDevice9_SetDialogBoxMode(This, bEnableDialogs);724mtx_unlock(&d3dlock_global);725return r;726}727728static void NINE_WINAPI729LockDevice9_SetGammaRamp( struct NineDevice9 *This,730UINT iSwapChain,731DWORD Flags,732const D3DGAMMARAMP *pRamp )733{734mtx_lock(&d3dlock_global);735NineDevice9_SetGammaRamp(This, iSwapChain, Flags, pRamp);736mtx_unlock(&d3dlock_global);737}738739static void NINE_WINAPI740LockDevice9_GetGammaRamp( struct NineDevice9 *This,741UINT iSwapChain,742D3DGAMMARAMP *pRamp )743{744mtx_lock(&d3dlock_global);745NineDevice9_GetGammaRamp(This, iSwapChain, pRamp);746mtx_unlock(&d3dlock_global);747}748749static HRESULT NINE_WINAPI750LockDevice9_CreateTexture( struct NineDevice9 *This,751UINT Width,752UINT Height,753UINT Levels,754DWORD Usage,755D3DFORMAT Format,756D3DPOOL Pool,757IDirect3DTexture9 **ppTexture,758HANDLE *pSharedHandle )759{760HRESULT r;761mtx_lock(&d3dlock_global);762r = NineDevice9_CreateTexture(This, Width, Height, Levels, Usage, Format, Pool, ppTexture, pSharedHandle);763mtx_unlock(&d3dlock_global);764return r;765}766767static HRESULT NINE_WINAPI768LockDevice9_CreateVolumeTexture( struct NineDevice9 *This,769UINT Width,770UINT Height,771UINT Depth,772UINT Levels,773DWORD Usage,774D3DFORMAT Format,775D3DPOOL Pool,776IDirect3DVolumeTexture9 **ppVolumeTexture,777HANDLE *pSharedHandle )778{779HRESULT r;780mtx_lock(&d3dlock_global);781r = NineDevice9_CreateVolumeTexture(This, Width, Height, Depth, Levels, Usage, Format, Pool, ppVolumeTexture, pSharedHandle);782mtx_unlock(&d3dlock_global);783return r;784}785786static HRESULT NINE_WINAPI787LockDevice9_CreateCubeTexture( struct NineDevice9 *This,788UINT EdgeLength,789UINT Levels,790DWORD Usage,791D3DFORMAT Format,792D3DPOOL Pool,793IDirect3DCubeTexture9 **ppCubeTexture,794HANDLE *pSharedHandle )795{796HRESULT r;797mtx_lock(&d3dlock_global);798r = NineDevice9_CreateCubeTexture(This, EdgeLength, Levels, Usage, Format, Pool, ppCubeTexture, pSharedHandle);799mtx_unlock(&d3dlock_global);800return r;801}802803static HRESULT NINE_WINAPI804LockDevice9_CreateVertexBuffer( struct NineDevice9 *This,805UINT Length,806DWORD Usage,807DWORD FVF,808D3DPOOL Pool,809IDirect3DVertexBuffer9 **ppVertexBuffer,810HANDLE *pSharedHandle )811{812HRESULT r;813mtx_lock(&d3dlock_global);814r = NineDevice9_CreateVertexBuffer(This, Length, Usage, FVF, Pool, ppVertexBuffer, pSharedHandle);815mtx_unlock(&d3dlock_global);816return r;817}818819static HRESULT NINE_WINAPI820LockDevice9_CreateIndexBuffer( struct NineDevice9 *This,821UINT Length,822DWORD Usage,823D3DFORMAT Format,824D3DPOOL Pool,825IDirect3DIndexBuffer9 **ppIndexBuffer,826HANDLE *pSharedHandle )827{828HRESULT r;829mtx_lock(&d3dlock_global);830r = NineDevice9_CreateIndexBuffer(This, Length, Usage, Format, Pool, ppIndexBuffer, pSharedHandle);831mtx_unlock(&d3dlock_global);832return r;833}834835static HRESULT NINE_WINAPI836LockDevice9_CreateRenderTarget( struct NineDevice9 *This,837UINT Width,838UINT Height,839D3DFORMAT Format,840D3DMULTISAMPLE_TYPE MultiSample,841DWORD MultisampleQuality,842BOOL Lockable,843IDirect3DSurface9 **ppSurface,844HANDLE *pSharedHandle )845{846HRESULT r;847mtx_lock(&d3dlock_global);848r = NineDevice9_CreateRenderTarget(This, Width, Height, Format, MultiSample, MultisampleQuality, Lockable, ppSurface, pSharedHandle);849mtx_unlock(&d3dlock_global);850return r;851}852853static HRESULT NINE_WINAPI854LockDevice9_CreateDepthStencilSurface( struct NineDevice9 *This,855UINT Width,856UINT Height,857D3DFORMAT Format,858D3DMULTISAMPLE_TYPE MultiSample,859DWORD MultisampleQuality,860BOOL Discard,861IDirect3DSurface9 **ppSurface,862HANDLE *pSharedHandle )863{864HRESULT r;865mtx_lock(&d3dlock_global);866r = NineDevice9_CreateDepthStencilSurface(This, Width, Height, Format, MultiSample, MultisampleQuality, Discard, ppSurface, pSharedHandle);867mtx_unlock(&d3dlock_global);868return r;869}870871static HRESULT NINE_WINAPI872LockDevice9_UpdateSurface( struct NineDevice9 *This,873IDirect3DSurface9 *pSourceSurface,874const RECT *pSourceRect,875IDirect3DSurface9 *pDestinationSurface,876const POINT *pDestPoint )877{878HRESULT r;879mtx_lock(&d3dlock_global);880r = NineDevice9_UpdateSurface(This, pSourceSurface, pSourceRect, pDestinationSurface, pDestPoint);881mtx_unlock(&d3dlock_global);882return r;883}884885static HRESULT NINE_WINAPI886LockDevice9_UpdateTexture( struct NineDevice9 *This,887IDirect3DBaseTexture9 *pSourceTexture,888IDirect3DBaseTexture9 *pDestinationTexture )889{890HRESULT r;891mtx_lock(&d3dlock_global);892r = NineDevice9_UpdateTexture(This, pSourceTexture, pDestinationTexture);893mtx_unlock(&d3dlock_global);894return r;895}896897static HRESULT NINE_WINAPI898LockDevice9_GetRenderTargetData( struct NineDevice9 *This,899IDirect3DSurface9 *pRenderTarget,900IDirect3DSurface9 *pDestSurface )901{902HRESULT r;903mtx_lock(&d3dlock_global);904r = NineDevice9_GetRenderTargetData(This, pRenderTarget, pDestSurface);905mtx_unlock(&d3dlock_global);906return r;907}908909static HRESULT NINE_WINAPI910LockDevice9_GetFrontBufferData( struct NineDevice9 *This,911UINT iSwapChain,912IDirect3DSurface9 *pDestSurface )913{914HRESULT r;915mtx_lock(&d3dlock_global);916r = NineDevice9_GetFrontBufferData(This, iSwapChain, pDestSurface);917mtx_unlock(&d3dlock_global);918return r;919}920921static HRESULT NINE_WINAPI922LockDevice9_StretchRect( struct NineDevice9 *This,923IDirect3DSurface9 *pSourceSurface,924const RECT *pSourceRect,925IDirect3DSurface9 *pDestSurface,926const RECT *pDestRect,927D3DTEXTUREFILTERTYPE Filter )928{929HRESULT r;930mtx_lock(&d3dlock_global);931r = NineDevice9_StretchRect(This, pSourceSurface, pSourceRect, pDestSurface, pDestRect, Filter);932mtx_unlock(&d3dlock_global);933return r;934}935936static HRESULT NINE_WINAPI937LockDevice9_ColorFill( struct NineDevice9 *This,938IDirect3DSurface9 *pSurface,939const RECT *pRect,940D3DCOLOR color )941{942HRESULT r;943mtx_lock(&d3dlock_global);944r = NineDevice9_ColorFill(This, pSurface, pRect, color);945mtx_unlock(&d3dlock_global);946return r;947}948949static HRESULT NINE_WINAPI950LockDevice9_CreateOffscreenPlainSurface( struct NineDevice9 *This,951UINT Width,952UINT Height,953D3DFORMAT Format,954D3DPOOL Pool,955IDirect3DSurface9 **ppSurface,956HANDLE *pSharedHandle )957{958HRESULT r;959mtx_lock(&d3dlock_global);960r = NineDevice9_CreateOffscreenPlainSurface(This, Width, Height, Format, Pool, ppSurface, pSharedHandle);961mtx_unlock(&d3dlock_global);962return r;963}964965static HRESULT NINE_WINAPI966LockDevice9_SetRenderTarget( struct NineDevice9 *This,967DWORD RenderTargetIndex,968IDirect3DSurface9 *pRenderTarget )969{970HRESULT r;971mtx_lock(&d3dlock_global);972r = NineDevice9_SetRenderTarget(This, RenderTargetIndex, pRenderTarget);973mtx_unlock(&d3dlock_global);974return r;975}976977static HRESULT NINE_WINAPI978LockDevice9_GetRenderTarget( struct NineDevice9 *This,979DWORD RenderTargetIndex,980IDirect3DSurface9 **ppRenderTarget )981{982HRESULT r;983mtx_lock(&d3dlock_global);984r = NineDevice9_GetRenderTarget(This, RenderTargetIndex, ppRenderTarget);985mtx_unlock(&d3dlock_global);986return r;987}988989static HRESULT NINE_WINAPI990LockDevice9_SetDepthStencilSurface( struct NineDevice9 *This,991IDirect3DSurface9 *pNewZStencil )992{993HRESULT r;994mtx_lock(&d3dlock_global);995r = NineDevice9_SetDepthStencilSurface(This, pNewZStencil);996mtx_unlock(&d3dlock_global);997return r;998}9991000static HRESULT NINE_WINAPI1001LockDevice9_GetDepthStencilSurface( struct NineDevice9 *This,1002IDirect3DSurface9 **ppZStencilSurface )1003{1004HRESULT r;1005mtx_lock(&d3dlock_global);1006r = NineDevice9_GetDepthStencilSurface(This, ppZStencilSurface);1007mtx_unlock(&d3dlock_global);1008return r;1009}10101011static HRESULT NINE_WINAPI1012LockDevice9_BeginScene( struct NineDevice9 *This )1013{1014HRESULT r;1015mtx_lock(&d3dlock_global);1016r = NineDevice9_BeginScene(This);1017mtx_unlock(&d3dlock_global);1018return r;1019}10201021static HRESULT NINE_WINAPI1022LockDevice9_EndScene( struct NineDevice9 *This )1023{1024HRESULT r;1025mtx_lock(&d3dlock_global);1026r = NineDevice9_EndScene(This);1027mtx_unlock(&d3dlock_global);1028return r;1029}10301031static HRESULT NINE_WINAPI1032LockDevice9_Clear( struct NineDevice9 *This,1033DWORD Count,1034const D3DRECT *pRects,1035DWORD Flags,1036D3DCOLOR Color,1037float Z,1038DWORD Stencil )1039{1040HRESULT r;1041mtx_lock(&d3dlock_global);1042r = NineDevice9_Clear(This, Count, pRects, Flags, Color, Z, Stencil);1043mtx_unlock(&d3dlock_global);1044return r;1045}10461047static HRESULT NINE_WINAPI1048LockDevice9_SetTransform( struct NineDevice9 *This,1049D3DTRANSFORMSTATETYPE State,1050const D3DMATRIX *pMatrix )1051{1052HRESULT r;1053mtx_lock(&d3dlock_global);1054r = NineDevice9_SetTransform(This, State, pMatrix);1055mtx_unlock(&d3dlock_global);1056return r;1057}10581059static HRESULT NINE_WINAPI1060LockDevice9_GetTransform( struct NineDevice9 *This,1061D3DTRANSFORMSTATETYPE State,1062D3DMATRIX *pMatrix )1063{1064HRESULT r;1065mtx_lock(&d3dlock_global);1066r = NineDevice9_GetTransform(This, State, pMatrix);1067mtx_unlock(&d3dlock_global);1068return r;1069}10701071static HRESULT NINE_WINAPI1072LockDevice9_MultiplyTransform( struct NineDevice9 *This,1073D3DTRANSFORMSTATETYPE State,1074const D3DMATRIX *pMatrix )1075{1076HRESULT r;1077mtx_lock(&d3dlock_global);1078r = NineDevice9_MultiplyTransform(This, State, pMatrix);1079mtx_unlock(&d3dlock_global);1080return r;1081}10821083static HRESULT NINE_WINAPI1084LockDevice9_SetViewport( struct NineDevice9 *This,1085const D3DVIEWPORT9 *pViewport )1086{1087HRESULT r;1088mtx_lock(&d3dlock_global);1089r = NineDevice9_SetViewport(This, pViewport);1090mtx_unlock(&d3dlock_global);1091return r;1092}10931094static HRESULT NINE_WINAPI1095LockDevice9_GetViewport( struct NineDevice9 *This,1096D3DVIEWPORT9 *pViewport )1097{1098HRESULT r;1099mtx_lock(&d3dlock_global);1100r = NineDevice9_GetViewport(This, pViewport);1101mtx_unlock(&d3dlock_global);1102return r;1103}11041105static HRESULT NINE_WINAPI1106LockDevice9_SetMaterial( struct NineDevice9 *This,1107const D3DMATERIAL9 *pMaterial )1108{1109HRESULT r;1110mtx_lock(&d3dlock_global);1111r = NineDevice9_SetMaterial(This, pMaterial);1112mtx_unlock(&d3dlock_global);1113return r;1114}11151116static HRESULT NINE_WINAPI1117LockDevice9_GetMaterial( struct NineDevice9 *This,1118D3DMATERIAL9 *pMaterial )1119{1120HRESULT r;1121mtx_lock(&d3dlock_global);1122r = NineDevice9_GetMaterial(This, pMaterial);1123mtx_unlock(&d3dlock_global);1124return r;1125}11261127static HRESULT NINE_WINAPI1128LockDevice9_SetLight( struct NineDevice9 *This,1129DWORD Index,1130const D3DLIGHT9 *pLight )1131{1132HRESULT r;1133mtx_lock(&d3dlock_global);1134r = NineDevice9_SetLight(This, Index, pLight);1135mtx_unlock(&d3dlock_global);1136return r;1137}11381139static HRESULT NINE_WINAPI1140LockDevice9_GetLight( struct NineDevice9 *This,1141DWORD Index,1142D3DLIGHT9 *pLight )1143{1144HRESULT r;1145mtx_lock(&d3dlock_global);1146r = NineDevice9_GetLight(This, Index, pLight);1147mtx_unlock(&d3dlock_global);1148return r;1149}11501151static HRESULT NINE_WINAPI1152LockDevice9_LightEnable( struct NineDevice9 *This,1153DWORD Index,1154BOOL Enable )1155{1156HRESULT r;1157mtx_lock(&d3dlock_global);1158r = NineDevice9_LightEnable(This, Index, Enable);1159mtx_unlock(&d3dlock_global);1160return r;1161}11621163static HRESULT NINE_WINAPI1164LockDevice9_GetLightEnable( struct NineDevice9 *This,1165DWORD Index,1166BOOL *pEnable )1167{1168HRESULT r;1169mtx_lock(&d3dlock_global);1170r = NineDevice9_GetLightEnable(This, Index, pEnable);1171mtx_unlock(&d3dlock_global);1172return r;1173}11741175static HRESULT NINE_WINAPI1176LockDevice9_SetClipPlane( struct NineDevice9 *This,1177DWORD Index,1178const float *pPlane )1179{1180HRESULT r;1181mtx_lock(&d3dlock_global);1182r = NineDevice9_SetClipPlane(This, Index, pPlane);1183mtx_unlock(&d3dlock_global);1184return r;1185}11861187static HRESULT NINE_WINAPI1188LockDevice9_GetClipPlane( struct NineDevice9 *This,1189DWORD Index,1190float *pPlane )1191{1192HRESULT r;1193mtx_lock(&d3dlock_global);1194r = NineDevice9_GetClipPlane(This, Index, pPlane);1195mtx_unlock(&d3dlock_global);1196return r;1197}11981199static HRESULT NINE_WINAPI1200LockDevice9_SetRenderState( struct NineDevice9 *This,1201D3DRENDERSTATETYPE State,1202DWORD Value )1203{1204HRESULT r;1205mtx_lock(&d3dlock_global);1206r = NineDevice9_SetRenderState(This, State, Value);1207mtx_unlock(&d3dlock_global);1208return r;1209}12101211static HRESULT NINE_WINAPI1212LockDevice9_GetRenderState( struct NineDevice9 *This,1213D3DRENDERSTATETYPE State,1214DWORD *pValue )1215{1216HRESULT r;1217mtx_lock(&d3dlock_global);1218r = NineDevice9_GetRenderState(This, State, pValue);1219mtx_unlock(&d3dlock_global);1220return r;1221}12221223static HRESULT NINE_WINAPI1224LockDevice9_CreateStateBlock( struct NineDevice9 *This,1225D3DSTATEBLOCKTYPE Type,1226IDirect3DStateBlock9 **ppSB )1227{1228HRESULT r;1229mtx_lock(&d3dlock_global);1230r = NineDevice9_CreateStateBlock(This, Type, ppSB);1231mtx_unlock(&d3dlock_global);1232return r;1233}12341235static HRESULT NINE_WINAPI1236LockDevice9_BeginStateBlock( struct NineDevice9 *This )1237{1238HRESULT r;1239mtx_lock(&d3dlock_global);1240r = NineDevice9_BeginStateBlock(This);1241mtx_unlock(&d3dlock_global);1242return r;1243}12441245static HRESULT NINE_WINAPI1246LockDevice9_EndStateBlock( struct NineDevice9 *This,1247IDirect3DStateBlock9 **ppSB )1248{1249HRESULT r;1250mtx_lock(&d3dlock_global);1251r = NineDevice9_EndStateBlock(This, ppSB);1252mtx_unlock(&d3dlock_global);1253return r;1254}12551256static HRESULT NINE_WINAPI1257LockDevice9_SetClipStatus( struct NineDevice9 *This,1258const D3DCLIPSTATUS9 *pClipStatus )1259{1260HRESULT r;1261mtx_lock(&d3dlock_global);1262r = NineDevice9_SetClipStatus(This, pClipStatus);1263mtx_unlock(&d3dlock_global);1264return r;1265}12661267static HRESULT NINE_WINAPI1268LockDevice9_GetClipStatus( struct NineDevice9 *This,1269D3DCLIPSTATUS9 *pClipStatus )1270{1271HRESULT r;1272mtx_lock(&d3dlock_global);1273r = NineDevice9_GetClipStatus(This, pClipStatus);1274mtx_unlock(&d3dlock_global);1275return r;1276}12771278static HRESULT NINE_WINAPI1279LockDevice9_GetTexture( struct NineDevice9 *This,1280DWORD Stage,1281IDirect3DBaseTexture9 **ppTexture )1282{1283HRESULT r;1284mtx_lock(&d3dlock_global);1285r = NineDevice9_GetTexture(This, Stage, ppTexture);1286mtx_unlock(&d3dlock_global);1287return r;1288}12891290static HRESULT NINE_WINAPI1291LockDevice9_SetTexture( struct NineDevice9 *This,1292DWORD Stage,1293IDirect3DBaseTexture9 *pTexture )1294{1295HRESULT r;1296mtx_lock(&d3dlock_global);1297r = NineDevice9_SetTexture(This, Stage, pTexture);1298mtx_unlock(&d3dlock_global);1299return r;1300}13011302static HRESULT NINE_WINAPI1303LockDevice9_GetTextureStageState( struct NineDevice9 *This,1304DWORD Stage,1305D3DTEXTURESTAGESTATETYPE Type,1306DWORD *pValue )1307{1308HRESULT r;1309mtx_lock(&d3dlock_global);1310r = NineDevice9_GetTextureStageState(This, Stage, Type, pValue);1311mtx_unlock(&d3dlock_global);1312return r;1313}13141315static HRESULT NINE_WINAPI1316LockDevice9_SetTextureStageState( struct NineDevice9 *This,1317DWORD Stage,1318D3DTEXTURESTAGESTATETYPE Type,1319DWORD Value )1320{1321HRESULT r;1322mtx_lock(&d3dlock_global);1323r = NineDevice9_SetTextureStageState(This, Stage, Type, Value);1324mtx_unlock(&d3dlock_global);1325return r;1326}13271328static HRESULT NINE_WINAPI1329LockDevice9_GetSamplerState( struct NineDevice9 *This,1330DWORD Sampler,1331D3DSAMPLERSTATETYPE Type,1332DWORD *pValue )1333{1334HRESULT r;1335mtx_lock(&d3dlock_global);1336r = NineDevice9_GetSamplerState(This, Sampler, Type, pValue);1337mtx_unlock(&d3dlock_global);1338return r;1339}13401341static HRESULT NINE_WINAPI1342LockDevice9_SetSamplerState( struct NineDevice9 *This,1343DWORD Sampler,1344D3DSAMPLERSTATETYPE Type,1345DWORD Value )1346{1347HRESULT r;1348mtx_lock(&d3dlock_global);1349r = NineDevice9_SetSamplerState(This, Sampler, Type, Value);1350mtx_unlock(&d3dlock_global);1351return r;1352}13531354static HRESULT NINE_WINAPI1355LockDevice9_ValidateDevice( struct NineDevice9 *This,1356DWORD *pNumPasses )1357{1358HRESULT r;1359mtx_lock(&d3dlock_global);1360r = NineDevice9_ValidateDevice(This, pNumPasses);1361mtx_unlock(&d3dlock_global);1362return r;1363}13641365static HRESULT NINE_WINAPI1366LockDevice9_SetPaletteEntries( struct NineDevice9 *This,1367UINT PaletteNumber,1368const PALETTEENTRY *pEntries )1369{1370HRESULT r;1371mtx_lock(&d3dlock_global);1372r = NineDevice9_SetPaletteEntries(This, PaletteNumber, pEntries);1373mtx_unlock(&d3dlock_global);1374return r;1375}13761377static HRESULT NINE_WINAPI1378LockDevice9_GetPaletteEntries( struct NineDevice9 *This,1379UINT PaletteNumber,1380PALETTEENTRY *pEntries )1381{1382HRESULT r;1383mtx_lock(&d3dlock_global);1384r = NineDevice9_GetPaletteEntries(This, PaletteNumber, pEntries);1385mtx_unlock(&d3dlock_global);1386return r;1387}13881389static HRESULT NINE_WINAPI1390LockDevice9_SetCurrentTexturePalette( struct NineDevice9 *This,1391UINT PaletteNumber )1392{1393HRESULT r;1394mtx_lock(&d3dlock_global);1395r = NineDevice9_SetCurrentTexturePalette(This, PaletteNumber);1396mtx_unlock(&d3dlock_global);1397return r;1398}13991400static HRESULT NINE_WINAPI1401LockDevice9_GetCurrentTexturePalette( struct NineDevice9 *This,1402UINT *PaletteNumber )1403{1404HRESULT r;1405mtx_lock(&d3dlock_global);1406r = NineDevice9_GetCurrentTexturePalette(This, PaletteNumber);1407mtx_unlock(&d3dlock_global);1408return r;1409}14101411static HRESULT NINE_WINAPI1412LockDevice9_SetScissorRect( struct NineDevice9 *This,1413const RECT *pRect )1414{1415HRESULT r;1416mtx_lock(&d3dlock_global);1417r = NineDevice9_SetScissorRect(This, pRect);1418mtx_unlock(&d3dlock_global);1419return r;1420}14211422static HRESULT NINE_WINAPI1423LockDevice9_GetScissorRect( struct NineDevice9 *This,1424RECT *pRect )1425{1426HRESULT r;1427mtx_lock(&d3dlock_global);1428r = NineDevice9_GetScissorRect(This, pRect);1429mtx_unlock(&d3dlock_global);1430return r;1431}14321433static HRESULT NINE_WINAPI1434LockDevice9_SetSoftwareVertexProcessing( struct NineDevice9 *This,1435BOOL bSoftware )1436{1437HRESULT r;1438mtx_lock(&d3dlock_global);1439r = NineDevice9_SetSoftwareVertexProcessing(This, bSoftware);1440mtx_unlock(&d3dlock_global);1441return r;1442}14431444static BOOL NINE_WINAPI1445LockDevice9_GetSoftwareVertexProcessing( struct NineDevice9 *This )1446{1447BOOL r;1448mtx_lock(&d3dlock_global);1449r = NineDevice9_GetSoftwareVertexProcessing(This);1450mtx_unlock(&d3dlock_global);1451return r;1452}14531454static HRESULT NINE_WINAPI1455LockDevice9_SetNPatchMode( struct NineDevice9 *This,1456float nSegments )1457{1458HRESULT r;1459mtx_lock(&d3dlock_global);1460r = NineDevice9_SetNPatchMode(This, nSegments);1461mtx_unlock(&d3dlock_global);1462return r;1463}14641465static float NINE_WINAPI1466LockDevice9_GetNPatchMode( struct NineDevice9 *This )1467{1468float r;1469mtx_lock(&d3dlock_global);1470r = NineDevice9_GetNPatchMode(This);1471mtx_unlock(&d3dlock_global);1472return r;1473}14741475static HRESULT NINE_WINAPI1476LockDevice9_DrawPrimitive( struct NineDevice9 *This,1477D3DPRIMITIVETYPE PrimitiveType,1478UINT StartVertex,1479UINT PrimitiveCount )1480{1481HRESULT r;1482mtx_lock(&d3dlock_global);1483r = NineDevice9_DrawPrimitive(This, PrimitiveType, StartVertex, PrimitiveCount);1484mtx_unlock(&d3dlock_global);1485return r;1486}14871488static HRESULT NINE_WINAPI1489LockDevice9_DrawIndexedPrimitive( struct NineDevice9 *This,1490D3DPRIMITIVETYPE PrimitiveType,1491INT BaseVertexIndex,1492UINT MinVertexIndex,1493UINT NumVertices,1494UINT startIndex,1495UINT primCount )1496{1497HRESULT r;1498mtx_lock(&d3dlock_global);1499r = NineDevice9_DrawIndexedPrimitive(This, PrimitiveType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);1500mtx_unlock(&d3dlock_global);1501return r;1502}15031504static HRESULT NINE_WINAPI1505LockDevice9_DrawPrimitiveUP( struct NineDevice9 *This,1506D3DPRIMITIVETYPE PrimitiveType,1507UINT PrimitiveCount,1508const void *pVertexStreamZeroData,1509UINT VertexStreamZeroStride )1510{1511HRESULT r;1512mtx_lock(&d3dlock_global);1513r = NineDevice9_DrawPrimitiveUP(This, PrimitiveType, PrimitiveCount, pVertexStreamZeroData, VertexStreamZeroStride);1514mtx_unlock(&d3dlock_global);1515return r;1516}15171518static HRESULT NINE_WINAPI1519LockDevice9_DrawIndexedPrimitiveUP( struct NineDevice9 *This,1520D3DPRIMITIVETYPE PrimitiveType,1521UINT MinVertexIndex,1522UINT NumVertices,1523UINT PrimitiveCount,1524const void *pIndexData,1525D3DFORMAT IndexDataFormat,1526const void *pVertexStreamZeroData,1527UINT VertexStreamZeroStride )1528{1529HRESULT r;1530mtx_lock(&d3dlock_global);1531r = NineDevice9_DrawIndexedPrimitiveUP(This, PrimitiveType, MinVertexIndex, NumVertices, PrimitiveCount, pIndexData, IndexDataFormat, pVertexStreamZeroData, VertexStreamZeroStride);1532mtx_unlock(&d3dlock_global);1533return r;1534}15351536static HRESULT NINE_WINAPI1537LockDevice9_ProcessVertices( struct NineDevice9 *This,1538UINT SrcStartIndex,1539UINT DestIndex,1540UINT VertexCount,1541IDirect3DVertexBuffer9 *pDestBuffer,1542IDirect3DVertexDeclaration9 *pVertexDecl,1543DWORD Flags )1544{1545HRESULT r;1546mtx_lock(&d3dlock_global);1547r = NineDevice9_ProcessVertices(This, SrcStartIndex, DestIndex, VertexCount, pDestBuffer, pVertexDecl, Flags);1548mtx_unlock(&d3dlock_global);1549return r;1550}15511552static HRESULT NINE_WINAPI1553LockDevice9_CreateVertexDeclaration( struct NineDevice9 *This,1554const D3DVERTEXELEMENT9 *pVertexElements,1555IDirect3DVertexDeclaration9 **ppDecl )1556{1557HRESULT r;1558mtx_lock(&d3dlock_global);1559r = NineDevice9_CreateVertexDeclaration(This, pVertexElements, ppDecl);1560mtx_unlock(&d3dlock_global);1561return r;1562}15631564static HRESULT NINE_WINAPI1565LockDevice9_SetVertexDeclaration( struct NineDevice9 *This,1566IDirect3DVertexDeclaration9 *pDecl )1567{1568HRESULT r;1569mtx_lock(&d3dlock_global);1570r = NineDevice9_SetVertexDeclaration(This, pDecl);1571mtx_unlock(&d3dlock_global);1572return r;1573}15741575static HRESULT NINE_WINAPI1576LockDevice9_GetVertexDeclaration( struct NineDevice9 *This,1577IDirect3DVertexDeclaration9 **ppDecl )1578{1579HRESULT r;1580mtx_lock(&d3dlock_global);1581r = NineDevice9_GetVertexDeclaration(This, ppDecl);1582mtx_unlock(&d3dlock_global);1583return r;1584}15851586static HRESULT NINE_WINAPI1587LockDevice9_SetFVF( struct NineDevice9 *This,1588DWORD FVF )1589{1590HRESULT r;1591mtx_lock(&d3dlock_global);1592r = NineDevice9_SetFVF(This, FVF);1593mtx_unlock(&d3dlock_global);1594return r;1595}15961597static HRESULT NINE_WINAPI1598LockDevice9_GetFVF( struct NineDevice9 *This,1599DWORD *pFVF )1600{1601HRESULT r;1602mtx_lock(&d3dlock_global);1603r = NineDevice9_GetFVF(This, pFVF);1604mtx_unlock(&d3dlock_global);1605return r;1606}16071608static HRESULT NINE_WINAPI1609LockDevice9_CreateVertexShader( struct NineDevice9 *This,1610const DWORD *pFunction,1611IDirect3DVertexShader9 **ppShader )1612{1613HRESULT r;1614mtx_lock(&d3dlock_global);1615r = NineDevice9_CreateVertexShader(This, pFunction, ppShader);1616mtx_unlock(&d3dlock_global);1617return r;1618}16191620static HRESULT NINE_WINAPI1621LockDevice9_SetVertexShader( struct NineDevice9 *This,1622IDirect3DVertexShader9 *pShader )1623{1624HRESULT r;1625mtx_lock(&d3dlock_global);1626r = NineDevice9_SetVertexShader(This, pShader);1627mtx_unlock(&d3dlock_global);1628return r;1629}16301631static HRESULT NINE_WINAPI1632LockDevice9_GetVertexShader( struct NineDevice9 *This,1633IDirect3DVertexShader9 **ppShader )1634{1635HRESULT r;1636mtx_lock(&d3dlock_global);1637r = NineDevice9_GetVertexShader(This, ppShader);1638mtx_unlock(&d3dlock_global);1639return r;1640}16411642static HRESULT NINE_WINAPI1643LockDevice9_SetVertexShaderConstantF( struct NineDevice9 *This,1644UINT StartRegister,1645const float *pConstantData,1646UINT Vector4fCount )1647{1648HRESULT r;1649mtx_lock(&d3dlock_global);1650r = NineDevice9_SetVertexShaderConstantF(This, StartRegister, pConstantData, Vector4fCount);1651mtx_unlock(&d3dlock_global);1652return r;1653}16541655static HRESULT NINE_WINAPI1656LockDevice9_GetVertexShaderConstantF( struct NineDevice9 *This,1657UINT StartRegister,1658float *pConstantData,1659UINT Vector4fCount )1660{1661HRESULT r;1662mtx_lock(&d3dlock_global);1663r = NineDevice9_GetVertexShaderConstantF(This, StartRegister, pConstantData, Vector4fCount);1664mtx_unlock(&d3dlock_global);1665return r;1666}16671668static HRESULT NINE_WINAPI1669LockDevice9_SetVertexShaderConstantI( struct NineDevice9 *This,1670UINT StartRegister,1671const int *pConstantData,1672UINT Vector4iCount )1673{1674HRESULT r;1675mtx_lock(&d3dlock_global);1676r = NineDevice9_SetVertexShaderConstantI(This, StartRegister, pConstantData, Vector4iCount);1677mtx_unlock(&d3dlock_global);1678return r;1679}16801681static HRESULT NINE_WINAPI1682LockDevice9_GetVertexShaderConstantI( struct NineDevice9 *This,1683UINT StartRegister,1684int *pConstantData,1685UINT Vector4iCount )1686{1687HRESULT r;1688mtx_lock(&d3dlock_global);1689r = NineDevice9_GetVertexShaderConstantI(This, StartRegister, pConstantData, Vector4iCount);1690mtx_unlock(&d3dlock_global);1691return r;1692}16931694static HRESULT NINE_WINAPI1695LockDevice9_SetVertexShaderConstantB( struct NineDevice9 *This,1696UINT StartRegister,1697const BOOL *pConstantData,1698UINT BoolCount )1699{1700HRESULT r;1701mtx_lock(&d3dlock_global);1702r = NineDevice9_SetVertexShaderConstantB(This, StartRegister, pConstantData, BoolCount);1703mtx_unlock(&d3dlock_global);1704return r;1705}17061707static HRESULT NINE_WINAPI1708LockDevice9_GetVertexShaderConstantB( struct NineDevice9 *This,1709UINT StartRegister,1710BOOL *pConstantData,1711UINT BoolCount )1712{1713HRESULT r;1714mtx_lock(&d3dlock_global);1715r = NineDevice9_GetVertexShaderConstantB(This, StartRegister, pConstantData, BoolCount);1716mtx_unlock(&d3dlock_global);1717return r;1718}17191720static HRESULT NINE_WINAPI1721LockDevice9_SetStreamSource( struct NineDevice9 *This,1722UINT StreamNumber,1723IDirect3DVertexBuffer9 *pStreamData,1724UINT OffsetInBytes,1725UINT Stride )1726{1727HRESULT r;1728mtx_lock(&d3dlock_global);1729r = NineDevice9_SetStreamSource(This, StreamNumber, pStreamData, OffsetInBytes, Stride);1730mtx_unlock(&d3dlock_global);1731return r;1732}17331734static HRESULT NINE_WINAPI1735LockDevice9_GetStreamSource( struct NineDevice9 *This,1736UINT StreamNumber,1737IDirect3DVertexBuffer9 **ppStreamData,1738UINT *pOffsetInBytes,1739UINT *pStride )1740{1741HRESULT r;1742mtx_lock(&d3dlock_global);1743r = NineDevice9_GetStreamSource(This, StreamNumber, ppStreamData, pOffsetInBytes, pStride);1744mtx_unlock(&d3dlock_global);1745return r;1746}17471748static HRESULT NINE_WINAPI1749LockDevice9_SetStreamSourceFreq( struct NineDevice9 *This,1750UINT StreamNumber,1751UINT Setting )1752{1753HRESULT r;1754mtx_lock(&d3dlock_global);1755r = NineDevice9_SetStreamSourceFreq(This, StreamNumber, Setting);1756mtx_unlock(&d3dlock_global);1757return r;1758}17591760static HRESULT NINE_WINAPI1761LockDevice9_GetStreamSourceFreq( struct NineDevice9 *This,1762UINT StreamNumber,1763UINT *pSetting )1764{1765HRESULT r;1766mtx_lock(&d3dlock_global);1767r = NineDevice9_GetStreamSourceFreq(This, StreamNumber, pSetting);1768mtx_unlock(&d3dlock_global);1769return r;1770}17711772static HRESULT NINE_WINAPI1773LockDevice9_SetIndices( struct NineDevice9 *This,1774IDirect3DIndexBuffer9 *pIndexData )1775{1776HRESULT r;1777mtx_lock(&d3dlock_global);1778r = NineDevice9_SetIndices(This, pIndexData);1779mtx_unlock(&d3dlock_global);1780return r;1781}17821783static HRESULT NINE_WINAPI1784LockDevice9_GetIndices( struct NineDevice9 *This,1785IDirect3DIndexBuffer9 **ppIndexData )1786{1787HRESULT r;1788mtx_lock(&d3dlock_global);1789r = NineDevice9_GetIndices(This, ppIndexData);1790mtx_unlock(&d3dlock_global);1791return r;1792}17931794static HRESULT NINE_WINAPI1795LockDevice9_CreatePixelShader( struct NineDevice9 *This,1796const DWORD *pFunction,1797IDirect3DPixelShader9 **ppShader )1798{1799HRESULT r;1800mtx_lock(&d3dlock_global);1801r = NineDevice9_CreatePixelShader(This, pFunction, ppShader);1802mtx_unlock(&d3dlock_global);1803return r;1804}18051806static HRESULT NINE_WINAPI1807LockDevice9_SetPixelShader( struct NineDevice9 *This,1808IDirect3DPixelShader9 *pShader )1809{1810HRESULT r;1811mtx_lock(&d3dlock_global);1812r = NineDevice9_SetPixelShader(This, pShader);1813mtx_unlock(&d3dlock_global);1814return r;1815}18161817static HRESULT NINE_WINAPI1818LockDevice9_GetPixelShader( struct NineDevice9 *This,1819IDirect3DPixelShader9 **ppShader )1820{1821HRESULT r;1822mtx_lock(&d3dlock_global);1823r = NineDevice9_GetPixelShader(This, ppShader);1824mtx_unlock(&d3dlock_global);1825return r;1826}18271828static HRESULT NINE_WINAPI1829LockDevice9_SetPixelShaderConstantF( struct NineDevice9 *This,1830UINT StartRegister,1831const float *pConstantData,1832UINT Vector4fCount )1833{1834HRESULT r;1835mtx_lock(&d3dlock_global);1836r = NineDevice9_SetPixelShaderConstantF(This, StartRegister, pConstantData, Vector4fCount);1837mtx_unlock(&d3dlock_global);1838return r;1839}18401841static HRESULT NINE_WINAPI1842LockDevice9_GetPixelShaderConstantF( struct NineDevice9 *This,1843UINT StartRegister,1844float *pConstantData,1845UINT Vector4fCount )1846{1847HRESULT r;1848mtx_lock(&d3dlock_global);1849r = NineDevice9_GetPixelShaderConstantF(This, StartRegister, pConstantData, Vector4fCount);1850mtx_unlock(&d3dlock_global);1851return r;1852}18531854static HRESULT NINE_WINAPI1855LockDevice9_SetPixelShaderConstantI( struct NineDevice9 *This,1856UINT StartRegister,1857const int *pConstantData,1858UINT Vector4iCount )1859{1860HRESULT r;1861mtx_lock(&d3dlock_global);1862r = NineDevice9_SetPixelShaderConstantI(This, StartRegister, pConstantData, Vector4iCount);1863mtx_unlock(&d3dlock_global);1864return r;1865}18661867static HRESULT NINE_WINAPI1868LockDevice9_GetPixelShaderConstantI( struct NineDevice9 *This,1869UINT StartRegister,1870int *pConstantData,1871UINT Vector4iCount )1872{1873HRESULT r;1874mtx_lock(&d3dlock_global);1875r = NineDevice9_GetPixelShaderConstantI(This, StartRegister, pConstantData, Vector4iCount);1876mtx_unlock(&d3dlock_global);1877return r;1878}18791880static HRESULT NINE_WINAPI1881LockDevice9_SetPixelShaderConstantB( struct NineDevice9 *This,1882UINT StartRegister,1883const BOOL *pConstantData,1884UINT BoolCount )1885{1886HRESULT r;1887mtx_lock(&d3dlock_global);1888r = NineDevice9_SetPixelShaderConstantB(This, StartRegister, pConstantData, BoolCount);1889mtx_unlock(&d3dlock_global);1890return r;1891}18921893static HRESULT NINE_WINAPI1894LockDevice9_GetPixelShaderConstantB( struct NineDevice9 *This,1895UINT StartRegister,1896BOOL *pConstantData,1897UINT BoolCount )1898{1899HRESULT r;1900mtx_lock(&d3dlock_global);1901r = NineDevice9_GetPixelShaderConstantB(This, StartRegister, pConstantData, BoolCount);1902mtx_unlock(&d3dlock_global);1903return r;1904}19051906static HRESULT NINE_WINAPI1907LockDevice9_DrawRectPatch( struct NineDevice9 *This,1908UINT Handle,1909const float *pNumSegs,1910const D3DRECTPATCH_INFO *pRectPatchInfo )1911{1912HRESULT r;1913mtx_lock(&d3dlock_global);1914r = NineDevice9_DrawRectPatch(This, Handle, pNumSegs, pRectPatchInfo);1915mtx_unlock(&d3dlock_global);1916return r;1917}19181919static HRESULT NINE_WINAPI1920LockDevice9_DrawTriPatch( struct NineDevice9 *This,1921UINT Handle,1922const float *pNumSegs,1923const D3DTRIPATCH_INFO *pTriPatchInfo )1924{1925HRESULT r;1926mtx_lock(&d3dlock_global);1927r = NineDevice9_DrawTriPatch(This, Handle, pNumSegs, pTriPatchInfo);1928mtx_unlock(&d3dlock_global);1929return r;1930}19311932static HRESULT NINE_WINAPI1933LockDevice9_DeletePatch( struct NineDevice9 *This,1934UINT Handle )1935{1936HRESULT r;1937mtx_lock(&d3dlock_global);1938r = NineDevice9_DeletePatch(This, Handle);1939mtx_unlock(&d3dlock_global);1940return r;1941}19421943static HRESULT NINE_WINAPI1944LockDevice9_CreateQuery( struct NineDevice9 *This,1945D3DQUERYTYPE Type,1946IDirect3DQuery9 **ppQuery )1947{1948HRESULT r;1949mtx_lock(&d3dlock_global);1950r = NineDevice9_CreateQuery(This, Type, ppQuery);1951mtx_unlock(&d3dlock_global);1952return r;1953}19541955IDirect3DDevice9Vtbl LockDevice9_vtable = {1956(void *)NineUnknown_QueryInterface,1957(void *)NineUnknown_AddRef,1958(void *)NineUnknown_ReleaseWithDtorLock,1959(void *)LockDevice9_TestCooperativeLevel,1960(void *)LockDevice9_GetAvailableTextureMem,1961(void *)LockDevice9_EvictManagedResources,1962(void *)LockDevice9_GetDirect3D,1963(void *)NineDevice9_GetDeviceCaps, /* immutable */1964(void *)LockDevice9_GetDisplayMode,1965(void *)NineDevice9_GetCreationParameters, /* immutable */1966(void *)LockDevice9_SetCursorProperties,1967(void *)LockDevice9_SetCursorPosition,1968(void *)LockDevice9_ShowCursor,1969(void *)LockDevice9_CreateAdditionalSwapChain,1970(void *)LockDevice9_GetSwapChain,1971(void *)LockDevice9_GetNumberOfSwapChains,1972(void *)LockDevice9_Reset,1973(void *)LockDevice9_Present,1974(void *)LockDevice9_GetBackBuffer,1975(void *)LockDevice9_GetRasterStatus,1976(void *)LockDevice9_SetDialogBoxMode,1977(void *)LockDevice9_SetGammaRamp,1978(void *)LockDevice9_GetGammaRamp,1979(void *)LockDevice9_CreateTexture,1980(void *)LockDevice9_CreateVolumeTexture,1981(void *)LockDevice9_CreateCubeTexture,1982(void *)LockDevice9_CreateVertexBuffer,1983(void *)LockDevice9_CreateIndexBuffer,1984(void *)LockDevice9_CreateRenderTarget,1985(void *)LockDevice9_CreateDepthStencilSurface,1986(void *)LockDevice9_UpdateSurface,1987(void *)LockDevice9_UpdateTexture,1988(void *)LockDevice9_GetRenderTargetData,1989(void *)LockDevice9_GetFrontBufferData,1990(void *)LockDevice9_StretchRect,1991(void *)LockDevice9_ColorFill,1992(void *)LockDevice9_CreateOffscreenPlainSurface,1993(void *)LockDevice9_SetRenderTarget,1994(void *)LockDevice9_GetRenderTarget,1995(void *)LockDevice9_SetDepthStencilSurface,1996(void *)LockDevice9_GetDepthStencilSurface,1997(void *)LockDevice9_BeginScene,1998(void *)LockDevice9_EndScene,1999(void *)LockDevice9_Clear,2000(void *)LockDevice9_SetTransform,2001(void *)LockDevice9_GetTransform,2002(void *)LockDevice9_MultiplyTransform,2003(void *)LockDevice9_SetViewport,2004(void *)LockDevice9_GetViewport,2005(void *)LockDevice9_SetMaterial,2006(void *)LockDevice9_GetMaterial,2007(void *)LockDevice9_SetLight,2008(void *)LockDevice9_GetLight,2009(void *)LockDevice9_LightEnable,2010(void *)LockDevice9_GetLightEnable,2011(void *)LockDevice9_SetClipPlane,2012(void *)LockDevice9_GetClipPlane,2013(void *)LockDevice9_SetRenderState,2014(void *)LockDevice9_GetRenderState,2015(void *)LockDevice9_CreateStateBlock,2016(void *)LockDevice9_BeginStateBlock,2017(void *)LockDevice9_EndStateBlock,2018(void *)LockDevice9_SetClipStatus,2019(void *)LockDevice9_GetClipStatus,2020(void *)LockDevice9_GetTexture,2021(void *)LockDevice9_SetTexture,2022(void *)LockDevice9_GetTextureStageState,2023(void *)LockDevice9_SetTextureStageState,2024(void *)LockDevice9_GetSamplerState,2025(void *)LockDevice9_SetSamplerState,2026(void *)LockDevice9_ValidateDevice,2027(void *)LockDevice9_SetPaletteEntries,2028(void *)LockDevice9_GetPaletteEntries,2029(void *)LockDevice9_SetCurrentTexturePalette,2030(void *)LockDevice9_GetCurrentTexturePalette,2031(void *)LockDevice9_SetScissorRect,2032(void *)LockDevice9_GetScissorRect,2033(void *)LockDevice9_SetSoftwareVertexProcessing,2034(void *)LockDevice9_GetSoftwareVertexProcessing,2035(void *)LockDevice9_SetNPatchMode,2036(void *)LockDevice9_GetNPatchMode,2037(void *)LockDevice9_DrawPrimitive,2038(void *)LockDevice9_DrawIndexedPrimitive,2039(void *)LockDevice9_DrawPrimitiveUP,2040(void *)LockDevice9_DrawIndexedPrimitiveUP,2041(void *)LockDevice9_ProcessVertices,2042(void *)LockDevice9_CreateVertexDeclaration,2043(void *)LockDevice9_SetVertexDeclaration,2044(void *)LockDevice9_GetVertexDeclaration,2045(void *)LockDevice9_SetFVF,2046(void *)LockDevice9_GetFVF,2047(void *)LockDevice9_CreateVertexShader,2048(void *)LockDevice9_SetVertexShader,2049(void *)LockDevice9_GetVertexShader,2050(void *)LockDevice9_SetVertexShaderConstantF,2051(void *)LockDevice9_GetVertexShaderConstantF,2052(void *)LockDevice9_SetVertexShaderConstantI,2053(void *)LockDevice9_GetVertexShaderConstantI,2054(void *)LockDevice9_SetVertexShaderConstantB,2055(void *)LockDevice9_GetVertexShaderConstantB,2056(void *)LockDevice9_SetStreamSource,2057(void *)LockDevice9_GetStreamSource,2058(void *)LockDevice9_SetStreamSourceFreq,2059(void *)LockDevice9_GetStreamSourceFreq,2060(void *)LockDevice9_SetIndices,2061(void *)LockDevice9_GetIndices,2062(void *)LockDevice9_CreatePixelShader,2063(void *)LockDevice9_SetPixelShader,2064(void *)LockDevice9_GetPixelShader,2065(void *)LockDevice9_SetPixelShaderConstantF,2066(void *)LockDevice9_GetPixelShaderConstantF,2067(void *)LockDevice9_SetPixelShaderConstantI,2068(void *)LockDevice9_GetPixelShaderConstantI,2069(void *)LockDevice9_SetPixelShaderConstantB,2070(void *)LockDevice9_GetPixelShaderConstantB,2071(void *)LockDevice9_DrawRectPatch,2072(void *)LockDevice9_DrawTriPatch,2073(void *)LockDevice9_DeletePatch,2074(void *)LockDevice9_CreateQuery2075};20762077static HRESULT NINE_WINAPI2078LockDevice9Ex_SetConvolutionMonoKernel( struct NineDevice9Ex *This,2079UINT width,2080UINT height,2081float *rows,2082float *columns )2083{2084HRESULT r;2085mtx_lock(&d3dlock_global);2086r = NineDevice9Ex_SetConvolutionMonoKernel(This, width, height, rows, columns);2087mtx_unlock(&d3dlock_global);2088return r;2089}20902091static HRESULT NINE_WINAPI2092LockDevice9Ex_ComposeRects( struct NineDevice9Ex *This,2093IDirect3DSurface9 *pSrc,2094IDirect3DSurface9 *pDst,2095IDirect3DVertexBuffer9 *pSrcRectDescs,2096UINT NumRects,2097IDirect3DVertexBuffer9 *pDstRectDescs,2098D3DCOMPOSERECTSOP Operation,2099int Xoffset,2100int Yoffset )2101{2102HRESULT r;2103mtx_lock(&d3dlock_global);2104r = NineDevice9Ex_ComposeRects(This, pSrc, pDst, pSrcRectDescs, NumRects, pDstRectDescs, Operation, Xoffset, Yoffset);2105mtx_unlock(&d3dlock_global);2106return r;2107}21082109static HRESULT NINE_WINAPI2110LockDevice9Ex_PresentEx( struct NineDevice9Ex *This,2111const RECT *pSourceRect,2112const RECT *pDestRect,2113HWND hDestWindowOverride,2114const RGNDATA *pDirtyRegion,2115DWORD dwFlags )2116{2117HRESULT r;2118mtx_lock(&d3dlock_global);2119r = NineDevice9Ex_PresentEx(This, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, dwFlags);2120mtx_unlock(&d3dlock_global);2121return r;2122}21232124static HRESULT NINE_WINAPI2125LockDevice9Ex_GetGPUThreadPriority( struct NineDevice9Ex *This,2126INT *pPriority )2127{2128HRESULT r;2129mtx_lock(&d3dlock_global);2130r = NineDevice9Ex_GetGPUThreadPriority(This, pPriority);2131mtx_unlock(&d3dlock_global);2132return r;2133}21342135static HRESULT NINE_WINAPI2136LockDevice9Ex_SetGPUThreadPriority( struct NineDevice9Ex *This,2137INT Priority )2138{2139HRESULT r;2140mtx_lock(&d3dlock_global);2141r = NineDevice9Ex_SetGPUThreadPriority(This, Priority);2142mtx_unlock(&d3dlock_global);2143return r;2144}21452146static HRESULT NINE_WINAPI2147LockDevice9Ex_WaitForVBlank( struct NineDevice9Ex *This,2148UINT iSwapChain )2149{2150HRESULT r;2151mtx_lock(&d3dlock_global);2152r = NineDevice9Ex_WaitForVBlank(This, iSwapChain);2153mtx_unlock(&d3dlock_global);2154return r;2155}21562157static HRESULT NINE_WINAPI2158LockDevice9Ex_CheckResourceResidency( struct NineDevice9Ex *This,2159IDirect3DResource9 **pResourceArray,2160UINT32 NumResources )2161{2162HRESULT r;2163mtx_lock(&d3dlock_global);2164r = NineDevice9Ex_CheckResourceResidency(This, pResourceArray, NumResources);2165mtx_unlock(&d3dlock_global);2166return r;2167}21682169static HRESULT NINE_WINAPI2170LockDevice9Ex_SetMaximumFrameLatency( struct NineDevice9Ex *This,2171UINT MaxLatency )2172{2173HRESULT r;2174mtx_lock(&d3dlock_global);2175r = NineDevice9Ex_SetMaximumFrameLatency(This, MaxLatency);2176mtx_unlock(&d3dlock_global);2177return r;2178}21792180static HRESULT NINE_WINAPI2181LockDevice9Ex_GetMaximumFrameLatency( struct NineDevice9Ex *This,2182UINT *pMaxLatency )2183{2184HRESULT r;2185mtx_lock(&d3dlock_global);2186r = NineDevice9Ex_GetMaximumFrameLatency(This, pMaxLatency);2187mtx_unlock(&d3dlock_global);2188return r;2189}21902191static HRESULT NINE_WINAPI2192LockDevice9Ex_CheckDeviceState( struct NineDevice9Ex *This,2193HWND hDestinationWindow )2194{2195HRESULT r;2196mtx_lock(&d3dlock_global);2197r = NineDevice9Ex_CheckDeviceState(This, hDestinationWindow);2198mtx_unlock(&d3dlock_global);2199return r;2200}22012202static HRESULT NINE_WINAPI2203LockDevice9Ex_CreateRenderTargetEx( struct NineDevice9Ex *This,2204UINT Width,2205UINT Height,2206D3DFORMAT Format,2207D3DMULTISAMPLE_TYPE MultiSample,2208DWORD MultisampleQuality,2209BOOL Lockable,2210IDirect3DSurface9 **ppSurface,2211HANDLE *pSharedHandle,2212DWORD Usage )2213{2214HRESULT r;2215mtx_lock(&d3dlock_global);2216r = NineDevice9Ex_CreateRenderTargetEx(This, Width, Height, Format, MultiSample, MultisampleQuality, Lockable, ppSurface, pSharedHandle, Usage);2217mtx_unlock(&d3dlock_global);2218return r;2219}22202221static HRESULT NINE_WINAPI2222LockDevice9Ex_CreateOffscreenPlainSurfaceEx( struct NineDevice9Ex *This,2223UINT Width,2224UINT Height,2225D3DFORMAT Format,2226D3DPOOL Pool,2227IDirect3DSurface9 **ppSurface,2228HANDLE *pSharedHandle,2229DWORD Usage )2230{2231HRESULT r;2232mtx_lock(&d3dlock_global);2233r = NineDevice9Ex_CreateOffscreenPlainSurfaceEx(This, Width, Height, Format, Pool, ppSurface, pSharedHandle, Usage);2234mtx_unlock(&d3dlock_global);2235return r;2236}22372238static HRESULT NINE_WINAPI2239LockDevice9Ex_CreateDepthStencilSurfaceEx( struct NineDevice9Ex *This,2240UINT Width,2241UINT Height,2242D3DFORMAT Format,2243D3DMULTISAMPLE_TYPE MultiSample,2244DWORD MultisampleQuality,2245BOOL Discard,2246IDirect3DSurface9 **ppSurface,2247HANDLE *pSharedHandle,2248DWORD Usage )2249{2250HRESULT r;2251mtx_lock(&d3dlock_global);2252r = NineDevice9Ex_CreateDepthStencilSurfaceEx(This, Width, Height, Format, MultiSample, MultisampleQuality, Discard, ppSurface, pSharedHandle, Usage);2253mtx_unlock(&d3dlock_global);2254return r;2255}22562257static HRESULT NINE_WINAPI2258LockDevice9Ex_ResetEx( struct NineDevice9Ex *This,2259D3DPRESENT_PARAMETERS *pPresentationParameters,2260D3DDISPLAYMODEEX *pFullscreenDisplayMode )2261{2262HRESULT r;2263mtx_lock(&d3dlock_global);2264r = NineDevice9Ex_ResetEx(This, pPresentationParameters, pFullscreenDisplayMode);2265mtx_unlock(&d3dlock_global);2266return r;2267}22682269static HRESULT NINE_WINAPI2270LockDevice9Ex_GetDisplayModeEx( struct NineDevice9Ex *This,2271UINT iSwapChain,2272D3DDISPLAYMODEEX *pMode,2273D3DDISPLAYROTATION *pRotation )2274{2275HRESULT r;2276mtx_lock(&d3dlock_global);2277r = NineDevice9Ex_GetDisplayModeEx(This, iSwapChain, pMode, pRotation);2278mtx_unlock(&d3dlock_global);2279return r;2280}22812282IDirect3DDevice9ExVtbl LockDevice9Ex_vtable = {2283(void *)NineUnknown_QueryInterface,2284(void *)NineUnknown_AddRef,2285(void *)NineUnknown_ReleaseWithDtorLock,2286(void *)LockDevice9_TestCooperativeLevel,2287(void *)LockDevice9_GetAvailableTextureMem,2288(void *)LockDevice9_EvictManagedResources,2289(void *)LockDevice9_GetDirect3D,2290(void *)NineDevice9_GetDeviceCaps,2291(void *)LockDevice9_GetDisplayMode,2292(void *)NineDevice9_GetCreationParameters,2293(void *)LockDevice9_SetCursorProperties,2294(void *)LockDevice9_SetCursorPosition,2295(void *)LockDevice9_ShowCursor,2296(void *)LockDevice9_CreateAdditionalSwapChain,2297(void *)LockDevice9_GetSwapChain,2298(void *)LockDevice9_GetNumberOfSwapChains,2299(void *)LockDevice9_Reset,2300(void *)LockDevice9_Present,2301(void *)LockDevice9_GetBackBuffer,2302(void *)LockDevice9_GetRasterStatus,2303(void *)LockDevice9_SetDialogBoxMode,2304(void *)LockDevice9_SetGammaRamp,2305(void *)LockDevice9_GetGammaRamp,2306(void *)LockDevice9_CreateTexture,2307(void *)LockDevice9_CreateVolumeTexture,2308(void *)LockDevice9_CreateCubeTexture,2309(void *)LockDevice9_CreateVertexBuffer,2310(void *)LockDevice9_CreateIndexBuffer,2311(void *)LockDevice9_CreateRenderTarget,2312(void *)LockDevice9_CreateDepthStencilSurface,2313(void *)LockDevice9_UpdateSurface,2314(void *)LockDevice9_UpdateTexture,2315(void *)LockDevice9_GetRenderTargetData,2316(void *)LockDevice9_GetFrontBufferData,2317(void *)LockDevice9_StretchRect,2318(void *)LockDevice9_ColorFill,2319(void *)LockDevice9_CreateOffscreenPlainSurface,2320(void *)LockDevice9_SetRenderTarget,2321(void *)LockDevice9_GetRenderTarget,2322(void *)LockDevice9_SetDepthStencilSurface,2323(void *)LockDevice9_GetDepthStencilSurface,2324(void *)LockDevice9_BeginScene,2325(void *)LockDevice9_EndScene,2326(void *)LockDevice9_Clear,2327(void *)LockDevice9_SetTransform,2328(void *)LockDevice9_GetTransform,2329(void *)LockDevice9_MultiplyTransform,2330(void *)LockDevice9_SetViewport,2331(void *)LockDevice9_GetViewport,2332(void *)LockDevice9_SetMaterial,2333(void *)LockDevice9_GetMaterial,2334(void *)LockDevice9_SetLight,2335(void *)LockDevice9_GetLight,2336(void *)LockDevice9_LightEnable,2337(void *)LockDevice9_GetLightEnable,2338(void *)LockDevice9_SetClipPlane,2339(void *)LockDevice9_GetClipPlane,2340(void *)LockDevice9_SetRenderState,2341(void *)LockDevice9_GetRenderState,2342(void *)LockDevice9_CreateStateBlock,2343(void *)LockDevice9_BeginStateBlock,2344(void *)LockDevice9_EndStateBlock,2345(void *)LockDevice9_SetClipStatus,2346(void *)LockDevice9_GetClipStatus,2347(void *)LockDevice9_GetTexture,2348(void *)LockDevice9_SetTexture,2349(void *)LockDevice9_GetTextureStageState,2350(void *)LockDevice9_SetTextureStageState,2351(void *)LockDevice9_GetSamplerState,2352(void *)LockDevice9_SetSamplerState,2353(void *)LockDevice9_ValidateDevice,2354(void *)LockDevice9_SetPaletteEntries,2355(void *)LockDevice9_GetPaletteEntries,2356(void *)LockDevice9_SetCurrentTexturePalette,2357(void *)LockDevice9_GetCurrentTexturePalette,2358(void *)LockDevice9_SetScissorRect,2359(void *)LockDevice9_GetScissorRect,2360(void *)LockDevice9_SetSoftwareVertexProcessing,2361(void *)LockDevice9_GetSoftwareVertexProcessing,2362(void *)LockDevice9_SetNPatchMode,2363(void *)LockDevice9_GetNPatchMode,2364(void *)LockDevice9_DrawPrimitive,2365(void *)LockDevice9_DrawIndexedPrimitive,2366(void *)LockDevice9_DrawPrimitiveUP,2367(void *)LockDevice9_DrawIndexedPrimitiveUP,2368(void *)LockDevice9_ProcessVertices,2369(void *)LockDevice9_CreateVertexDeclaration,2370(void *)LockDevice9_SetVertexDeclaration,2371(void *)LockDevice9_GetVertexDeclaration,2372(void *)LockDevice9_SetFVF,2373(void *)LockDevice9_GetFVF,2374(void *)LockDevice9_CreateVertexShader,2375(void *)LockDevice9_SetVertexShader,2376(void *)LockDevice9_GetVertexShader,2377(void *)LockDevice9_SetVertexShaderConstantF,2378(void *)LockDevice9_GetVertexShaderConstantF,2379(void *)LockDevice9_SetVertexShaderConstantI,2380(void *)LockDevice9_GetVertexShaderConstantI,2381(void *)LockDevice9_SetVertexShaderConstantB,2382(void *)LockDevice9_GetVertexShaderConstantB,2383(void *)LockDevice9_SetStreamSource,2384(void *)LockDevice9_GetStreamSource,2385(void *)LockDevice9_SetStreamSourceFreq,2386(void *)LockDevice9_GetStreamSourceFreq,2387(void *)LockDevice9_SetIndices,2388(void *)LockDevice9_GetIndices,2389(void *)LockDevice9_CreatePixelShader,2390(void *)LockDevice9_SetPixelShader,2391(void *)LockDevice9_GetPixelShader,2392(void *)LockDevice9_SetPixelShaderConstantF,2393(void *)LockDevice9_GetPixelShaderConstantF,2394(void *)LockDevice9_SetPixelShaderConstantI,2395(void *)LockDevice9_GetPixelShaderConstantI,2396(void *)LockDevice9_SetPixelShaderConstantB,2397(void *)LockDevice9_GetPixelShaderConstantB,2398(void *)LockDevice9_DrawRectPatch,2399(void *)LockDevice9_DrawTriPatch,2400(void *)LockDevice9_DeletePatch,2401(void *)LockDevice9_CreateQuery,2402(void *)LockDevice9Ex_SetConvolutionMonoKernel,2403(void *)LockDevice9Ex_ComposeRects,2404(void *)LockDevice9Ex_PresentEx,2405(void *)LockDevice9Ex_GetGPUThreadPriority,2406(void *)LockDevice9Ex_SetGPUThreadPriority,2407(void *)LockDevice9Ex_WaitForVBlank,2408(void *)LockDevice9Ex_CheckResourceResidency,2409(void *)LockDevice9Ex_SetMaximumFrameLatency,2410(void *)LockDevice9Ex_GetMaximumFrameLatency,2411(void *)LockDevice9Ex_CheckDeviceState,2412(void *)LockDevice9Ex_CreateRenderTargetEx,2413(void *)LockDevice9Ex_CreateOffscreenPlainSurfaceEx,2414(void *)LockDevice9Ex_CreateDepthStencilSurfaceEx,2415(void *)LockDevice9Ex_ResetEx,2416(void *)LockDevice9Ex_GetDisplayModeEx2417};24182419static HRESULT NINE_WINAPI2420LockDevice9Video_GetContentProtectionCaps( struct NineDevice9Video *This,2421const GUID *pCryptoType,2422const GUID *pDecodeProfile,2423D3DCONTENTPROTECTIONCAPS *pCaps )2424{2425HRESULT r;2426mtx_lock(&d3dlock_global);2427r = NineDevice9Video_GetContentProtectionCaps(This, pCryptoType, pDecodeProfile, pCaps);2428mtx_unlock(&d3dlock_global);2429return r;2430}24312432static HRESULT NINE_WINAPI2433LockDevice9Video_CreateAuthenticatedChannel( struct NineDevice9Video *This,2434D3DAUTHENTICATEDCHANNELTYPE ChannelType,2435IDirect3DAuthenticatedChannel9 **ppAuthenticatedChannel,2436HANDLE *pChannelHandle )2437{2438HRESULT r;2439mtx_lock(&d3dlock_global);2440r = NineDevice9Video_CreateAuthenticatedChannel(This, ChannelType, ppAuthenticatedChannel, pChannelHandle);2441mtx_unlock(&d3dlock_global);2442return r;2443}24442445static HRESULT NINE_WINAPI2446LockDevice9Video_CreateCryptoSession( struct NineDevice9Video *This,2447const GUID *pCryptoType,2448const GUID *pDecodeProfile,2449IDirect3DCryptoSession9 **ppCryptoSession,2450HANDLE *pCryptoHandle )2451{2452HRESULT r;2453mtx_lock(&d3dlock_global);2454r = NineDevice9Video_CreateCryptoSession(This, pCryptoType, pDecodeProfile, ppCryptoSession, pCryptoHandle);2455mtx_unlock(&d3dlock_global);2456return r;2457}24582459IDirect3DDevice9VideoVtbl LockDevice9Video_vtable = {2460(void *)NineUnknown_QueryInterface,2461(void *)NineUnknown_AddRef,2462(void *)NineUnknown_ReleaseWithDtorLock,2463(void *)LockDevice9Video_GetContentProtectionCaps,2464(void *)LockDevice9Video_CreateAuthenticatedChannel,2465(void *)LockDevice9Video_CreateCryptoSession2466};24672468static HRESULT NINE_WINAPI2469LockIndexBuffer9_Lock( struct NineIndexBuffer9 *This,2470UINT OffsetToLock,2471UINT SizeToLock,2472void **ppbData,2473DWORD Flags )2474{2475HRESULT r;2476mtx_lock(&d3dlock_global);2477r = NineIndexBuffer9_Lock(This, OffsetToLock, SizeToLock, ppbData, Flags);2478mtx_unlock(&d3dlock_global);2479return r;2480}24812482static HRESULT NINE_WINAPI2483LockIndexBuffer9_Unlock( struct NineIndexBuffer9 *This )2484{2485HRESULT r;2486mtx_lock(&d3dlock_global);2487r = NineIndexBuffer9_Unlock(This);2488mtx_unlock(&d3dlock_global);2489return r;2490}24912492#if 02493static HRESULT NINE_WINAPI2494LockIndexBuffer9_GetDesc( struct NineIndexBuffer9 *This,2495D3DINDEXBUFFER_DESC *pDesc )2496{2497HRESULT r;2498mtx_lock(&d3dlock_global);2499r = NineIndexBuffer9_GetDesc(This, pDesc);2500mtx_unlock(&d3dlock_global);2501return r;2502}2503#endif25042505IDirect3DIndexBuffer9Vtbl LockIndexBuffer9_vtable = {2506(void *)NineUnknown_QueryInterface,2507(void *)NineUnknown_AddRef,2508(void *)NineUnknown_ReleaseWithDtorLock,2509(void *)NineUnknown_GetDevice, /* actually part of Resource9 iface */2510(void *)LockUnknown_SetPrivateData,2511(void *)LockUnknown_GetPrivateData,2512(void *)LockUnknown_FreePrivateData,2513(void *)LockResource9_SetPriority,2514(void *)LockResource9_GetPriority,2515(void *)NineResource9_PreLoad, /* nop */2516(void *)NineResource9_GetType, /* immutable */2517(void *)LockIndexBuffer9_Lock,2518(void *)LockIndexBuffer9_Unlock,2519(void *)NineIndexBuffer9_GetDesc /* immutable */2520};25212522#if 02523static HRESULT NINE_WINAPI2524LockPixelShader9_GetDevice( struct NinePixelShader9 *This,2525IDirect3DDevice9 **ppDevice )2526{2527HRESULT r;2528mtx_lock(&d3dlock_global);2529r = NineUnknown_GetDevice(NineUnknown(This), ppDevice);2530mtx_unlock(&d3dlock_global);2531return r;2532}2533#endif25342535static HRESULT NINE_WINAPI2536LockPixelShader9_GetFunction( struct NinePixelShader9 *This,2537void *pData,2538UINT *pSizeOfData )2539{2540HRESULT r;2541mtx_lock(&d3dlock_global);2542r = NinePixelShader9_GetFunction(This, pData, pSizeOfData);2543mtx_unlock(&d3dlock_global);2544return r;2545}25462547IDirect3DPixelShader9Vtbl LockPixelShader9_vtable = {2548(void *)NineUnknown_QueryInterface,2549(void *)NineUnknown_AddRef,2550(void *)NineUnknown_ReleaseWithDtorLock,2551(void *)NineUnknown_GetDevice,2552(void *)LockPixelShader9_GetFunction2553};25542555#if 02556static HRESULT NINE_WINAPI2557LockQuery9_GetDevice( struct NineQuery9 *This,2558IDirect3DDevice9 **ppDevice )2559{2560HRESULT r;2561mtx_lock(&d3dlock_global);2562r = NineUnknown_GetDevice(NineUnknown(This), ppDevice);2563mtx_unlock(&d3dlock_global);2564return r;2565}2566#endif25672568#if 02569static D3DQUERYTYPE NINE_WINAPI2570LockQuery9_GetType( struct NineQuery9 *This )2571{2572D3DQUERYTYPE r;2573mtx_lock(&d3dlock_global);2574r = NineQuery9_GetType(This);2575mtx_unlock(&d3dlock_global);2576return r;2577}2578#endif25792580#if 02581static DWORD NINE_WINAPI2582LockQuery9_GetDataSize( struct NineQuery9 *This )2583{2584DWORD r;2585mtx_lock(&d3dlock_global);2586r = NineQuery9_GetDataSize(This);2587mtx_unlock(&d3dlock_global);2588return r;2589}2590#endif25912592static HRESULT NINE_WINAPI2593LockQuery9_Issue( struct NineQuery9 *This,2594DWORD dwIssueFlags )2595{2596HRESULT r;2597mtx_lock(&d3dlock_global);2598r = NineQuery9_Issue(This, dwIssueFlags);2599mtx_unlock(&d3dlock_global);2600return r;2601}26022603static HRESULT NINE_WINAPI2604LockQuery9_GetData( struct NineQuery9 *This,2605void *pData,2606DWORD dwSize,2607DWORD dwGetDataFlags )2608{2609HRESULT r;2610mtx_lock(&d3dlock_global);2611r = NineQuery9_GetData(This, pData, dwSize, dwGetDataFlags);2612mtx_unlock(&d3dlock_global);2613return r;2614}26152616IDirect3DQuery9Vtbl LockQuery9_vtable = {2617(void *)NineUnknown_QueryInterface,2618(void *)NineUnknown_AddRef,2619(void *)NineUnknown_ReleaseWithDtorLock,2620(void *)NineUnknown_GetDevice, /* actually part of Query9 iface */2621(void *)NineQuery9_GetType, /* immutable */2622(void *)NineQuery9_GetDataSize, /* immutable */2623(void *)LockQuery9_Issue,2624(void *)LockQuery9_GetData2625};26262627#if 02628static HRESULT NINE_WINAPI2629LockStateBlock9_GetDevice( struct NineStateBlock9 *This,2630IDirect3DDevice9 **ppDevice )2631{2632HRESULT r;2633mtx_lock(&d3dlock_global);2634r = NineUnknown_GetDevice(NineUnknown(This), ppDevice);2635mtx_unlock(&d3dlock_global);2636return r;2637}2638#endif26392640static HRESULT NINE_WINAPI2641LockStateBlock9_Capture( struct NineStateBlock9 *This )2642{2643HRESULT r;2644mtx_lock(&d3dlock_global);2645r = NineStateBlock9_Capture(This);2646mtx_unlock(&d3dlock_global);2647return r;2648}26492650static HRESULT NINE_WINAPI2651LockStateBlock9_Apply( struct NineStateBlock9 *This )2652{2653HRESULT r;2654mtx_lock(&d3dlock_global);2655r = NineStateBlock9_Apply(This);2656mtx_unlock(&d3dlock_global);2657return r;2658}26592660IDirect3DStateBlock9Vtbl LockStateBlock9_vtable = {2661(void *)NineUnknown_QueryInterface,2662(void *)NineUnknown_AddRef,2663(void *)NineUnknown_ReleaseWithDtorLock,2664(void *)NineUnknown_GetDevice, /* actually part of StateBlock9 iface */2665(void *)LockStateBlock9_Capture,2666(void *)LockStateBlock9_Apply2667};26682669static HRESULT NINE_WINAPI2670LockSurface9_GetContainer( struct NineSurface9 *This,2671REFIID riid,2672void **ppContainer )2673{2674HRESULT r;2675mtx_lock(&d3dlock_global);2676r = NineSurface9_GetContainer(This, riid, ppContainer);2677mtx_unlock(&d3dlock_global);2678return r;2679}26802681#if 02682static HRESULT NINE_WINAPI2683LockSurface9_GetDesc( struct NineSurface9 *This,2684D3DSURFACE_DESC *pDesc )2685{2686HRESULT r;2687mtx_lock(&d3dlock_global);2688r = NineSurface9_GetDesc(This, pDesc);2689mtx_unlock(&d3dlock_global);2690return r;2691}2692#endif26932694static HRESULT NINE_WINAPI2695LockSurface9_LockRect( struct NineSurface9 *This,2696D3DLOCKED_RECT *pLockedRect,2697const RECT *pRect,2698DWORD Flags )2699{2700HRESULT r;2701mtx_lock(&d3dlock_global);2702r = NineSurface9_LockRect(This, pLockedRect, pRect, Flags);2703mtx_unlock(&d3dlock_global);2704return r;2705}27062707static HRESULT NINE_WINAPI2708LockSurface9_UnlockRect( struct NineSurface9 *This )2709{2710HRESULT r;2711mtx_lock(&d3dlock_global);2712r = NineSurface9_UnlockRect(This);2713mtx_unlock(&d3dlock_global);2714return r;2715}27162717static HRESULT NINE_WINAPI2718LockSurface9_GetDC( struct NineSurface9 *This,2719HDC *phdc )2720{2721HRESULT r;2722mtx_lock(&d3dlock_global);2723r = NineSurface9_GetDC(This, phdc);2724mtx_unlock(&d3dlock_global);2725return r;2726}27272728static HRESULT NINE_WINAPI2729LockSurface9_ReleaseDC( struct NineSurface9 *This,2730HDC hdc )2731{2732HRESULT r;2733mtx_lock(&d3dlock_global);2734r = NineSurface9_ReleaseDC(This, hdc);2735mtx_unlock(&d3dlock_global);2736return r;2737}27382739IDirect3DSurface9Vtbl LockSurface9_vtable = {2740(void *)NineUnknown_QueryInterface,2741(void *)NineUnknown_AddRef,2742(void *)NineUnknown_ReleaseWithDtorLock,2743(void *)NineUnknown_GetDevice, /* actually part of Resource9 iface */2744(void *)LockUnknown_SetPrivateData,2745(void *)LockUnknown_GetPrivateData,2746(void *)LockUnknown_FreePrivateData,2747(void *)LockResource9_SetPriority,2748(void *)LockResource9_GetPriority,2749(void *)NineResource9_PreLoad, /* nop */2750(void *)NineResource9_GetType, /* immutable */2751(void *)LockSurface9_GetContainer,2752(void *)NineSurface9_GetDesc, /* immutable */2753(void *)LockSurface9_LockRect,2754(void *)LockSurface9_UnlockRect,2755(void *)LockSurface9_GetDC,2756(void *)LockSurface9_ReleaseDC2757};27582759static HRESULT NINE_WINAPI2760LockSwapChain9_Present( struct NineSwapChain9 *This,2761const RECT *pSourceRect,2762const RECT *pDestRect,2763HWND hDestWindowOverride,2764const RGNDATA *pDirtyRegion,2765DWORD dwFlags )2766{2767HRESULT r;2768mtx_lock(&d3dlock_global);2769r = NineSwapChain9_Present(This, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, dwFlags);2770mtx_unlock(&d3dlock_global);2771return r;2772}27732774static HRESULT NINE_WINAPI2775LockSwapChain9_GetFrontBufferData( struct NineSwapChain9 *This,2776IDirect3DSurface9 *pDestSurface )2777{2778HRESULT r;2779mtx_lock(&d3dlock_global);2780r = NineSwapChain9_GetFrontBufferData(This, pDestSurface);2781mtx_unlock(&d3dlock_global);2782return r;2783}27842785static HRESULT NINE_WINAPI2786LockSwapChain9_GetBackBuffer( struct NineSwapChain9 *This,2787UINT iBackBuffer,2788D3DBACKBUFFER_TYPE Type,2789IDirect3DSurface9 **ppBackBuffer )2790{2791HRESULT r;2792mtx_lock(&d3dlock_global);2793r = NineSwapChain9_GetBackBuffer(This, iBackBuffer, Type, ppBackBuffer);2794mtx_unlock(&d3dlock_global);2795return r;2796}27972798static HRESULT NINE_WINAPI2799LockSwapChain9_GetRasterStatus( struct NineSwapChain9 *This,2800D3DRASTER_STATUS *pRasterStatus )2801{2802HRESULT r;2803mtx_lock(&d3dlock_global);2804r = NineSwapChain9_GetRasterStatus(This, pRasterStatus);2805mtx_unlock(&d3dlock_global);2806return r;2807}28082809static HRESULT NINE_WINAPI2810LockSwapChain9_GetDisplayMode( struct NineSwapChain9 *This,2811D3DDISPLAYMODE *pMode )2812{2813HRESULT r;2814mtx_lock(&d3dlock_global);2815r = NineSwapChain9_GetDisplayMode(This, pMode);2816mtx_unlock(&d3dlock_global);2817return r;2818}28192820#if 02821static HRESULT NINE_WINAPI2822LockSwapChain9_GetDevice( struct NineSwapChain9 *This,2823IDirect3DDevice9 **ppDevice )2824{2825HRESULT r;2826mtx_lock(&d3dlock_global);2827r = NineUnknown_GetDevice(NineUnknown(This), ppDevice);2828mtx_unlock(&d3dlock_global);2829return r;2830}2831#endif28322833static HRESULT NINE_WINAPI2834LockSwapChain9_GetPresentParameters( struct NineSwapChain9 *This,2835D3DPRESENT_PARAMETERS *pPresentationParameters )2836{2837HRESULT r;2838mtx_lock(&d3dlock_global);2839r = NineSwapChain9_GetPresentParameters(This, pPresentationParameters);2840mtx_unlock(&d3dlock_global);2841return r;2842}28432844IDirect3DSwapChain9Vtbl LockSwapChain9_vtable = {2845(void *)NineUnknown_QueryInterface,2846(void *)NineUnknown_AddRef,2847(void *)NineUnknown_ReleaseWithDtorLock,2848(void *)LockSwapChain9_Present,2849(void *)LockSwapChain9_GetFrontBufferData,2850(void *)LockSwapChain9_GetBackBuffer,2851(void *)LockSwapChain9_GetRasterStatus,2852(void *)LockSwapChain9_GetDisplayMode,2853(void *)NineUnknown_GetDevice, /* actually part of SwapChain9 iface */2854(void *)LockSwapChain9_GetPresentParameters2855};28562857static HRESULT NINE_WINAPI2858LockSwapChain9Ex_GetLastPresentCount( struct NineSwapChain9Ex *This,2859UINT *pLastPresentCount )2860{2861HRESULT r;2862mtx_lock(&d3dlock_global);2863r = NineSwapChain9Ex_GetLastPresentCount(This, pLastPresentCount);2864mtx_unlock(&d3dlock_global);2865return r;2866}28672868static HRESULT NINE_WINAPI2869LockSwapChain9Ex_GetPresentStats( struct NineSwapChain9Ex *This,2870D3DPRESENTSTATS *pPresentationStatistics )2871{2872HRESULT r;2873mtx_lock(&d3dlock_global);2874r = NineSwapChain9Ex_GetPresentStats(This, pPresentationStatistics);2875mtx_unlock(&d3dlock_global);2876return r;2877}28782879static HRESULT NINE_WINAPI2880LockSwapChain9Ex_GetDisplayModeEx( struct NineSwapChain9Ex *This,2881D3DDISPLAYMODEEX *pMode,2882D3DDISPLAYROTATION *pRotation )2883{2884HRESULT r;2885mtx_lock(&d3dlock_global);2886r = NineSwapChain9Ex_GetDisplayModeEx(This, pMode, pRotation);2887mtx_unlock(&d3dlock_global);2888return r;2889}28902891IDirect3DSwapChain9ExVtbl LockSwapChain9Ex_vtable = {2892(void *)NineUnknown_QueryInterface,2893(void *)NineUnknown_AddRef,2894(void *)NineUnknown_ReleaseWithDtorLock,2895(void *)LockSwapChain9_Present,2896(void *)LockSwapChain9_GetFrontBufferData,2897(void *)LockSwapChain9_GetBackBuffer,2898(void *)LockSwapChain9_GetRasterStatus,2899(void *)LockSwapChain9_GetDisplayMode,2900(void *)NineUnknown_GetDevice, /* actually part of NineSwapChain9 iface */2901(void *)LockSwapChain9_GetPresentParameters,2902(void *)LockSwapChain9Ex_GetLastPresentCount,2903(void *)LockSwapChain9Ex_GetPresentStats,2904(void *)LockSwapChain9Ex_GetDisplayModeEx2905};29062907#if 02908static HRESULT NINE_WINAPI2909LockTexture9_GetLevelDesc( struct NineTexture9 *This,2910UINT Level,2911D3DSURFACE_DESC *pDesc )2912{2913HRESULT r;2914mtx_lock(&d3dlock_global);2915r = NineTexture9_GetLevelDesc(This, Level, pDesc);2916mtx_unlock(&d3dlock_global);2917return r;2918}2919#endif29202921#if 02922static HRESULT NINE_WINAPI2923LockTexture9_GetSurfaceLevel( struct NineTexture9 *This,2924UINT Level,2925IDirect3DSurface9 **ppSurfaceLevel )2926{2927HRESULT r;2928mtx_lock(&d3dlock_global);2929r = NineTexture9_GetSurfaceLevel(This, Level, ppSurfaceLevel);2930mtx_unlock(&d3dlock_global);2931return r;2932}2933#endif29342935static HRESULT NINE_WINAPI2936LockTexture9_LockRect( struct NineTexture9 *This,2937UINT Level,2938D3DLOCKED_RECT *pLockedRect,2939const RECT *pRect,2940DWORD Flags )2941{2942HRESULT r;2943mtx_lock(&d3dlock_global);2944r = NineTexture9_LockRect(This, Level, pLockedRect, pRect, Flags);2945mtx_unlock(&d3dlock_global);2946return r;2947}29482949static HRESULT NINE_WINAPI2950LockTexture9_UnlockRect( struct NineTexture9 *This,2951UINT Level )2952{2953HRESULT r;2954mtx_lock(&d3dlock_global);2955r = NineTexture9_UnlockRect(This, Level);2956mtx_unlock(&d3dlock_global);2957return r;2958}29592960static HRESULT NINE_WINAPI2961LockTexture9_AddDirtyRect( struct NineTexture9 *This,2962const RECT *pDirtyRect )2963{2964HRESULT r;2965mtx_lock(&d3dlock_global);2966r = NineTexture9_AddDirtyRect(This, pDirtyRect);2967mtx_unlock(&d3dlock_global);2968return r;2969}29702971IDirect3DTexture9Vtbl LockTexture9_vtable = {2972(void *)NineUnknown_QueryInterface,2973(void *)NineUnknown_AddRef,2974(void *)NineUnknown_ReleaseWithDtorLock,2975(void *)NineUnknown_GetDevice, /* actually part of Resource9 iface */2976(void *)LockUnknown_SetPrivateData,2977(void *)LockUnknown_GetPrivateData,2978(void *)LockUnknown_FreePrivateData,2979(void *)LockResource9_SetPriority,2980(void *)LockResource9_GetPriority,2981(void *)LockBaseTexture9_PreLoad,2982(void *)NineResource9_GetType, /* immutable */2983(void *)LockBaseTexture9_SetLOD,2984(void *)LockBaseTexture9_GetLOD,2985(void *)LockBaseTexture9_GetLevelCount,2986(void *)LockBaseTexture9_SetAutoGenFilterType,2987(void *)LockBaseTexture9_GetAutoGenFilterType,2988(void *)LockBaseTexture9_GenerateMipSubLevels,2989(void *)NineTexture9_GetLevelDesc, /* immutable */2990(void *)NineTexture9_GetSurfaceLevel, /* AddRef */2991(void *)LockTexture9_LockRect,2992(void *)LockTexture9_UnlockRect,2993(void *)LockTexture9_AddDirtyRect2994};29952996static HRESULT NINE_WINAPI2997LockVertexBuffer9_Lock( struct NineVertexBuffer9 *This,2998UINT OffsetToLock,2999UINT SizeToLock,3000void **ppbData,3001DWORD Flags )3002{3003HRESULT r;3004mtx_lock(&d3dlock_global);3005r = NineVertexBuffer9_Lock(This, OffsetToLock, SizeToLock, ppbData, Flags);3006mtx_unlock(&d3dlock_global);3007return r;3008}30093010static HRESULT NINE_WINAPI3011LockVertexBuffer9_Unlock( struct NineVertexBuffer9 *This )3012{3013HRESULT r;3014mtx_lock(&d3dlock_global);3015r = NineVertexBuffer9_Unlock(This);3016mtx_unlock(&d3dlock_global);3017return r;3018}30193020#if 03021static HRESULT NINE_WINAPI3022LockVertexBuffer9_GetDesc( struct NineVertexBuffer9 *This,3023D3DVERTEXBUFFER_DESC *pDesc )3024{3025HRESULT r;3026mtx_lock(&d3dlock_global);3027r = NineVertexBuffer9_GetDesc(This, pDesc);3028mtx_unlock(&d3dlock_global);3029return r;3030}3031#endif30323033IDirect3DVertexBuffer9Vtbl LockVertexBuffer9_vtable = {3034(void *)NineUnknown_QueryInterface,3035(void *)NineUnknown_AddRef,3036(void *)NineUnknown_ReleaseWithDtorLock,3037(void *)NineUnknown_GetDevice, /* actually part of Resource9 iface */3038(void *)LockUnknown_SetPrivateData,3039(void *)LockUnknown_GetPrivateData,3040(void *)LockUnknown_FreePrivateData,3041(void *)LockResource9_SetPriority,3042(void *)LockResource9_GetPriority,3043(void *)NineResource9_PreLoad, /* nop */3044(void *)NineResource9_GetType, /* immutable */3045(void *)LockVertexBuffer9_Lock,3046(void *)LockVertexBuffer9_Unlock,3047(void *)NineVertexBuffer9_GetDesc /* immutable */3048};30493050#if 03051static HRESULT NINE_WINAPI3052LockVertexDeclaration9_GetDevice( struct NineVertexDeclaration9 *This,3053IDirect3DDevice9 **ppDevice )3054{3055HRESULT r;3056mtx_lock(&d3dlock_global);3057r = NineUnknown_GetDevice(NineUnknown(This), ppDevice);3058mtx_unlock(&d3dlock_global);3059return r;3060}3061#endif30623063static HRESULT NINE_WINAPI3064LockVertexDeclaration9_GetDeclaration( struct NineVertexDeclaration9 *This,3065D3DVERTEXELEMENT9 *pElement,3066UINT *pNumElements )3067{3068HRESULT r;3069mtx_lock(&d3dlock_global);3070r = NineVertexDeclaration9_GetDeclaration(This, pElement, pNumElements);3071mtx_unlock(&d3dlock_global);3072return r;3073}30743075IDirect3DVertexDeclaration9Vtbl LockVertexDeclaration9_vtable = {3076(void *)NineUnknown_QueryInterface,3077(void *)NineUnknown_AddRef,3078(void *)NineUnknown_ReleaseWithDtorLock,3079(void *)NineUnknown_GetDevice, /* actually part of VertexDecl9 iface */3080(void *)LockVertexDeclaration9_GetDeclaration3081};30823083#if 03084static HRESULT NINE_WINAPI3085LockVertexShader9_GetDevice( struct NineVertexShader9 *This,3086IDirect3DDevice9 **ppDevice )3087{3088HRESULT r;3089mtx_lock(&d3dlock_global);3090r = NineUnknown_GetDevice(NineUnknown(This), ppDevice);3091mtx_unlock(&d3dlock_global);3092return r;3093}3094#endif30953096static HRESULT NINE_WINAPI3097LockVertexShader9_GetFunction( struct NineVertexShader9 *This,3098void *pData,3099UINT *pSizeOfData )3100{3101HRESULT r;3102mtx_lock(&d3dlock_global);3103r = NineVertexShader9_GetFunction(This, pData, pSizeOfData);3104mtx_unlock(&d3dlock_global);3105return r;3106}31073108IDirect3DVertexShader9Vtbl LockVertexShader9_vtable = {3109(void *)NineUnknown_QueryInterface,3110(void *)NineUnknown_AddRef,3111(void *)NineUnknown_ReleaseWithDtorLock,3112(void *)NineUnknown_GetDevice,3113(void *)LockVertexShader9_GetFunction3114};31153116#if 03117static HRESULT NINE_WINAPI3118LockVolume9_GetDevice( struct NineVolume9 *This,3119IDirect3DDevice9 **ppDevice )3120{3121HRESULT r;3122mtx_lock(&d3dlock_global);3123r = NineUnknown_GetDevice(NineUnknown(This), ppDevice);3124mtx_unlock(&d3dlock_global);3125return r;3126}3127#endif31283129static HRESULT NINE_WINAPI3130LockVolume9_GetContainer( struct NineVolume9 *This,3131REFIID riid,3132void **ppContainer )3133{3134HRESULT r;3135mtx_lock(&d3dlock_global);3136r = NineVolume9_GetContainer(This, riid, ppContainer);3137mtx_unlock(&d3dlock_global);3138return r;3139}31403141#if 03142static HRESULT NINE_WINAPI3143LockVolume9_GetDesc( struct NineVolume9 *This,3144D3DVOLUME_DESC *pDesc )3145{3146HRESULT r;3147mtx_lock(&d3dlock_global);3148r = NineVolume9_GetDesc(This, pDesc);3149mtx_unlock(&d3dlock_global);3150return r;3151}3152#endif31533154static HRESULT NINE_WINAPI3155LockVolume9_LockBox( struct NineVolume9 *This,3156D3DLOCKED_BOX *pLockedVolume,3157const D3DBOX *pBox,3158DWORD Flags )3159{3160HRESULT r;3161mtx_lock(&d3dlock_global);3162r = NineVolume9_LockBox(This, pLockedVolume, pBox, Flags);3163mtx_unlock(&d3dlock_global);3164return r;3165}31663167static HRESULT NINE_WINAPI3168LockVolume9_UnlockBox( struct NineVolume9 *This )3169{3170HRESULT r;3171mtx_lock(&d3dlock_global);3172r = NineVolume9_UnlockBox(This);3173mtx_unlock(&d3dlock_global);3174return r;3175}31763177IDirect3DVolume9Vtbl LockVolume9_vtable = {3178(void *)NineUnknown_QueryInterface,3179(void *)NineUnknown_AddRef,3180(void *)NineUnknown_ReleaseWithDtorLock,3181(void *)NineUnknown_GetDevice, /* actually part of Volume9 iface */3182(void *)LockUnknown_SetPrivateData,3183(void *)LockUnknown_GetPrivateData,3184(void *)LockUnknown_FreePrivateData,3185(void *)LockVolume9_GetContainer,3186(void *)NineVolume9_GetDesc, /* immutable */3187(void *)LockVolume9_LockBox,3188(void *)LockVolume9_UnlockBox3189};31903191#if 03192static HRESULT NINE_WINAPI3193LockVolumeTexture9_GetLevelDesc( struct NineVolumeTexture9 *This,3194UINT Level,3195D3DVOLUME_DESC *pDesc )3196{3197HRESULT r;3198mtx_lock(&d3dlock_global);3199r = NineVolumeTexture9_GetLevelDesc(This, Level, pDesc);3200mtx_unlock(&d3dlock_global);3201return r;3202}3203#endif32043205#if 03206static HRESULT NINE_WINAPI3207LockVolumeTexture9_GetVolumeLevel( struct NineVolumeTexture9 *This,3208UINT Level,3209IDirect3DVolume9 **ppVolumeLevel )3210{3211HRESULT r;3212mtx_lock(&d3dlock_global);3213r = NineVolumeTexture9_GetVolumeLevel(This, Level, ppVolumeLevel);3214mtx_unlock(&d3dlock_global);3215return r;3216}3217#endif32183219static HRESULT NINE_WINAPI3220LockVolumeTexture9_LockBox( struct NineVolumeTexture9 *This,3221UINT Level,3222D3DLOCKED_BOX *pLockedVolume,3223const D3DBOX *pBox,3224DWORD Flags )3225{3226HRESULT r;3227mtx_lock(&d3dlock_global);3228r = NineVolumeTexture9_LockBox(This, Level, pLockedVolume, pBox, Flags);3229mtx_unlock(&d3dlock_global);3230return r;3231}32323233static HRESULT NINE_WINAPI3234LockVolumeTexture9_UnlockBox( struct NineVolumeTexture9 *This,3235UINT Level )3236{3237HRESULT r;3238mtx_lock(&d3dlock_global);3239r = NineVolumeTexture9_UnlockBox(This, Level);3240mtx_unlock(&d3dlock_global);3241return r;3242}32433244static HRESULT NINE_WINAPI3245LockVolumeTexture9_AddDirtyBox( struct NineVolumeTexture9 *This,3246const D3DBOX *pDirtyBox )3247{3248HRESULT r;3249mtx_lock(&d3dlock_global);3250r = NineVolumeTexture9_AddDirtyBox(This, pDirtyBox);3251mtx_unlock(&d3dlock_global);3252return r;3253}32543255IDirect3DVolumeTexture9Vtbl LockVolumeTexture9_vtable = {3256(void *)NineUnknown_QueryInterface,3257(void *)NineUnknown_AddRef,3258(void *)NineUnknown_ReleaseWithDtorLock,3259(void *)NineUnknown_GetDevice, /* actually part of Resource9 iface */3260(void *)LockUnknown_SetPrivateData,3261(void *)LockUnknown_GetPrivateData,3262(void *)LockUnknown_FreePrivateData,3263(void *)LockResource9_SetPriority,3264(void *)LockResource9_GetPriority,3265(void *)LockBaseTexture9_PreLoad,3266(void *)NineResource9_GetType, /* immutable */3267(void *)LockBaseTexture9_SetLOD,3268(void *)LockBaseTexture9_GetLOD,3269(void *)LockBaseTexture9_GetLevelCount,3270(void *)LockBaseTexture9_SetAutoGenFilterType,3271(void *)LockBaseTexture9_GetAutoGenFilterType,3272(void *)LockBaseTexture9_GenerateMipSubLevels,3273(void *)NineVolumeTexture9_GetLevelDesc, /* immutable */3274(void *)NineVolumeTexture9_GetVolumeLevel, /* AddRef */3275(void *)LockVolumeTexture9_LockBox,3276(void *)LockVolumeTexture9_UnlockBox,3277(void *)LockVolumeTexture9_AddDirtyBox3278};32793280ID3DAdapter9Vtbl LockAdapter9_vtable = { /* not used */3281(void *)NULL,3282(void *)NULL,3283(void *)NULL,3284(void *)NULL,3285(void *)NULL,3286(void *)NULL,3287(void *)NULL,3288(void *)NULL,3289(void *)NULL,3290(void *)NULL,3291(void *)NULL,3292(void *)NULL3293};329432953296