⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 Wine-20031016
💻 C
📖 第 1 页 / 共 4 页
字号:
    surface->next_ddraw = This->surfaces;    surface->prev_ddraw = NULL;    if (This->surfaces)	This->surfaces->prev_ddraw = surface;    This->surfaces = surface;}void Main_DirectDraw_RemoveSurface(IDirectDrawImpl* This,				   IDirectDrawSurfaceImpl* surface){    assert(surface->ddraw_owner == This);    if (This->surfaces == surface)	This->surfaces = surface->next_ddraw;    if (This->primary_surface == surface)	This->primary_surface = NULL;    if (surface->next_ddraw)	surface->next_ddraw->prev_ddraw = surface->prev_ddraw;    if (surface->prev_ddraw)	surface->prev_ddraw->next_ddraw = surface->next_ddraw;}static void Main_DirectDraw_DeleteSurfaces(IDirectDrawImpl* This){    while (This->surfaces != NULL)	Main_DirectDrawSurface_ForceDestroy(This->surfaces);}void Main_DirectDraw_AddClipper(IDirectDrawImpl* This,				IDirectDrawClipperImpl* clipper){    assert(clipper->ddraw_owner == NULL || clipper->ddraw_owner == This);    clipper->ddraw_owner = This;    clipper->next_ddraw = This->clippers;    clipper->prev_ddraw = NULL;    if (This->clippers)	This->clippers->prev_ddraw = clipper;    This->clippers = clipper;}void Main_DirectDraw_RemoveClipper(IDirectDrawImpl* This,				   IDirectDrawClipperImpl* clipper){    assert(clipper->ddraw_owner == This);    if (This->clippers == clipper)	This->clippers = clipper->next_ddraw;    if (clipper->next_ddraw)	clipper->next_ddraw->prev_ddraw = clipper->prev_ddraw;    if (clipper->prev_ddraw)	clipper->prev_ddraw->next_ddraw = clipper->next_ddraw;}static void Main_DirectDraw_DeleteClippers(IDirectDrawImpl* This){    while (This->clippers != NULL)	Main_DirectDrawClipper_ForceDestroy(This->clippers);}void Main_DirectDraw_AddPalette(IDirectDrawImpl* This,				IDirectDrawPaletteImpl* palette){    assert(palette->ddraw_owner == NULL || palette->ddraw_owner == This);    palette->ddraw_owner = This;    /* where should it go? */    palette->next_ddraw = This->palettes;    palette->prev_ddraw = NULL;    if (This->palettes)	This->palettes->prev_ddraw = palette;    This->palettes = palette;}void Main_DirectDraw_RemovePalette(IDirectDrawImpl* This,				   IDirectDrawPaletteImpl* palette){    assert(palette->ddraw_owner == This);    if (This->palettes == palette)	This->palettes = palette->next_ddraw;    if (palette->next_ddraw)	palette->next_ddraw->prev_ddraw = palette->prev_ddraw;    if (palette->prev_ddraw)	palette->prev_ddraw->next_ddraw = palette->next_ddraw;}static void Main_DirectDraw_DeletePalettes(IDirectDrawImpl* This){    while (This->palettes != NULL)	Main_DirectDrawPalette_ForceDestroy(This->palettes);}/*** ??? */static voidLoseSurface(IDirectDrawSurfaceImpl *surface){    if (surface != NULL) surface->lose_surface(surface);}static voidLosePrimarySurface(IDirectDrawImpl *This){    /* MSDN: "If another application changes the display mode, the primary     * surface is lost, and the method returns DDERR_SURFACELOST until the     * primary surface is recreated to match the new display mode."     *     * We mark all the primary surfaces as lost as soon as the display     * mode is changed (by any application). */    LoseSurface(This->primary_surface);}/****************************************************************************** * Uninitialised DirectDraw functions * * This vtable is used when a DirectDraw object is created with * CoCreateInstance. The only usable method is Initialize. */void Uninit_DirectDraw_final_release(IDirectDrawImpl *This){    Main_DirectDraw_final_release(This);}static ICOM_VTABLE(IDirectDraw7) Uninit_DirectDraw_VTable;/* Not called from the vtable. */HRESULT Uninit_DirectDraw_Construct(IDirectDrawImpl *This, BOOL ex){    HRESULT hr;    hr = Main_DirectDraw_Construct(This, ex);    if (FAILED(hr)) return hr;    This->final_release = Uninit_DirectDraw_final_release;    ICOM_INIT_INTERFACE(This, IDirectDraw7, Uninit_DirectDraw_VTable);    return S_OK;}HRESULT Uninit_DirectDraw_Create(const GUID* pGUID,				       LPDIRECTDRAW7* pIface,				       IUnknown* pUnkOuter, BOOL ex){    HRESULT hr;    IDirectDrawImpl* This;    assert(pUnkOuter == NULL); /* XXX no: we must check this */    This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,		     sizeof(IDirectDrawImpl));    if (This == NULL) return E_OUTOFMEMORY;    hr = Uninit_DirectDraw_Construct(This, ex);    if (FAILED(hr))	HeapFree(GetProcessHeap(), HEAP_ZERO_MEMORY, This);    else	*pIface = ICOM_INTERFACE(This, IDirectDraw7);    return hr;}static HRESULT WINAPIUninit_DirectDraw_Initialize(LPDIRECTDRAW7 iface, LPGUID pDeviceGuid){    const ddraw_driver* driver;    ICOM_THIS(IDirectDrawImpl, iface);    TRACE("(%p)->(%p)\n", iface, pDeviceGuid);    driver = DDRAW_FindDriver(pDeviceGuid);    /* XXX This return value is not documented. (Not checked.) */    if (driver == NULL) return DDERR_INVALIDDIRECTDRAWGUID;    return driver->init(This, pDeviceGuid);}static HRESULT WINAPIUninit_DirectDraw_Compact(LPDIRECTDRAW7 iface){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_CreateClipper(LPDIRECTDRAW7 iface, DWORD dwFlags,				LPDIRECTDRAWCLIPPER *lplpDDClipper,				IUnknown *pUnkOuter){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_CreatePalette(LPDIRECTDRAW7 iface, DWORD dwFlags,				LPPALETTEENTRY lpColorTable,				LPDIRECTDRAWPALETTE *lplpDDPalette,				IUnknown *pUnkOuter){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_CreateSurface(LPDIRECTDRAW7 iface,				LPDDSURFACEDESC2 lpDDSurfaceDesc,				LPDIRECTDRAWSURFACE7 *lplpDDSurface,				IUnknown *pUnkOuter){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_DuplicateSurface(LPDIRECTDRAW7 iface,				   LPDIRECTDRAWSURFACE7 pSurf,				   LPDIRECTDRAWSURFACE7 *pDupSurf){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_EnumDisplayModes(LPDIRECTDRAW7 iface, DWORD dwFlags,				   LPDDSURFACEDESC2 lpDDSD,				   LPVOID context,				   LPDDENUMMODESCALLBACK2 cb){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_EnumSurfaces(LPDIRECTDRAW7 iface, DWORD dwFlags,			       LPDDSURFACEDESC2 pDDSD, LPVOID context,			       LPDDENUMSURFACESCALLBACK7 cb){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps,			  LPDDCAPS pHELCaps){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_GetDisplayMode(LPDIRECTDRAW7 iface,				 LPDDSURFACEDESC2 pDDSD){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_GetFourCCCodes(LPDIRECTDRAW7 iface, LPDWORD pNumCodes,				 LPDWORD pCodes){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_GetGDISurface(LPDIRECTDRAW7 iface,				LPDIRECTDRAWSURFACE7 *pGDISurf){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_GetMonitorFrequency(LPDIRECTDRAW7 iface, LPDWORD pdwFreq){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD pdwScanLine){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_GetVerticalBlankStatus(LPDIRECTDRAW7 iface, PBOOL pbIsInVB){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_RestoreDisplayMode(LPDIRECTDRAW7 iface){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_SetCooperativeLevel(LPDIRECTDRAW7 iface, HWND hWnd,				      DWORD dwFlags){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_SetDisplayMode(LPDIRECTDRAW7 iface, DWORD dwWidth,				 DWORD dwHeight, DWORD dwBPP,				 DWORD dwRefreshRate, DWORD dwFlags){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags,				       HANDLE hEvent){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 pDDCaps,				     LPDWORD pdwTotal, LPDWORD pdwFree){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_GetSurfaceFromDC(LPDIRECTDRAW7 iface, HDC hDC,				   LPDIRECTDRAWSURFACE7 *pSurf){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_RestoreAllSurfaces(LPDIRECTDRAW7 iface){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_TestCooperativeLevel(LPDIRECTDRAW7 iface){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_GetDeviceIdentifier(LPDIRECTDRAW7 iface,				      LPDDDEVICEIDENTIFIER2 pDDDI,				      DWORD dwFlags){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_StartModeTest(LPDIRECTDRAW7 iface, LPSIZE pszModes,				DWORD cModes, DWORD dwFlags){    return DDERR_NOTINITIALIZED;}static HRESULT WINAPIUninit_DirectDraw_EvaluateMode(LPDIRECTDRAW7 iface, DWORD dwFlags,			       LPDWORD pTimeout){    return DDERR_NOTINITIALIZED;}static ICOM_VTABLE(IDirectDraw7) Uninit_DirectDraw_VTable ={    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE    Main_DirectDraw_QueryInterface,    Main_DirectDraw_AddRef,    Main_DirectDraw_Release,    Uninit_DirectDraw_Compact,    Uninit_DirectDraw_CreateClipper,    Uninit_DirectDraw_CreatePalette,    Uninit_DirectDraw_CreateSurface,    Uninit_DirectDraw_DuplicateSurface,    Uninit_DirectDraw_EnumDisplayModes,    Uninit_DirectDraw_EnumSurfaces,    Uninit_DirectDraw_FlipToGDISurface,    Uninit_DirectDraw_GetCaps,    Uninit_DirectDraw_GetDisplayMode,    Uninit_DirectDraw_GetFourCCCodes,    Uninit_DirectDraw_GetGDISurface,    Uninit_DirectDraw_GetMonitorFrequency,    Uninit_DirectDraw_GetScanLine,    Uninit_DirectDraw_GetVerticalBlankStatus,    Uninit_DirectDraw_Initialize,    Uninit_DirectDraw_RestoreDisplayMode,    Uninit_DirectDraw_SetCooperativeLevel,    Uninit_DirectDraw_SetDisplayMode,    Uninit_DirectDraw_WaitForVerticalBlank,    Uninit_DirectDraw_GetAvailableVidMem,    Uninit_DirectDraw_GetSurfaceFromDC,    Uninit_DirectDraw_RestoreAllSurfaces,    Uninit_DirectDraw_TestCooperativeLevel,    Uninit_DirectDraw_GetDeviceIdentifier,    Uninit_DirectDraw_StartModeTest,    Uninit_DirectDraw_EvaluateMode};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -