mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 01:15:43 +00:00
revert last commit it bsd the ddraw in some case
svn path=/trunk/; revision=21819
This commit is contained in:
parent
fec1bfb78a
commit
64f88aed89
7 changed files with 171 additions and 125 deletions
|
@ -17,7 +17,6 @@
|
|||
<file>ddraw.rc</file>
|
||||
<file>main.c</file>
|
||||
<file>regsvr.c</file>
|
||||
<file>helinterface.c</file>
|
||||
|
||||
<file>clipper.c</file>
|
||||
<file>color.c</file>
|
||||
|
|
|
@ -199,7 +199,29 @@ Hal_DirectDraw_Release (LPDIRECTDRAW7 iface)
|
|||
|
||||
|
||||
|
||||
HRESULT
|
||||
Hal_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
DDHAL_SETEXCLUSIVEMODEDATA SetExclusiveMode;
|
||||
|
||||
if (!(This->mDDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETEXCLUSIVEMODE))
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
SetExclusiveMode.lpDD = &This->mDDrawGlobal;
|
||||
SetExclusiveMode.ddRVal = DDERR_NOTPALETTIZED;
|
||||
SetExclusiveMode.dwEnterExcl = This->cooperative_level;
|
||||
|
||||
if (This->mDDrawGlobal.lpDDCBtmp->HALDD.SetExclusiveMode(&SetExclusiveMode) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
}
|
||||
|
||||
return SetExclusiveMode.ddRVal;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
#include "rosdraw.h"
|
||||
|
||||
HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
This->HELMemoryAvilable = HEL_GRAPHIC_MEMORY_MAX;
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags = DDHAL_CB32_DESTROYDRIVER;
|
||||
This->mCallbacks.HELDD.DestroyDriver = HelDdDestroyDriver;
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_CREATESURFACE;
|
||||
This->mCallbacks.HELDD.CreateSurface = HelDdCreateSurface;
|
||||
|
||||
// DDHAL_CB32_
|
||||
//This->mCallbacks.HELDD.SetColorKey = HelDdSetColorKey;
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_SETMODE;
|
||||
This->mCallbacks.HELDD.SetMode = HelDdSetMode;
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_WAITFORVERTICALBLANK;
|
||||
This->mCallbacks.HELDD.WaitForVerticalBlank = HelDdWaitForVerticalBlank;
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_CANCREATESURFACE;
|
||||
This->mCallbacks.HELDD.CanCreateSurface = HelDdCanCreateSurface;
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_CREATEPALETTE;
|
||||
This->mCallbacks.HELDD.CreatePalette = HelDdCreatePalette;
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_GETSCANLINE;
|
||||
This->mCallbacks.HELDD.GetScanLine = HelDdGetScanLine;
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_SETEXCLUSIVEMODE;
|
||||
This->mCallbacks.HELDD.SetExclusiveMode = HelDdSetExclusiveMode;
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags += DDHAL_CB32_FLIPTOGDISURFACE;
|
||||
This->mCallbacks.HELDD.FlipToGDISurface = HelDdFlipToGDISurface;
|
||||
|
||||
return DD_OK;
|
||||
}
|
|
@ -290,7 +290,6 @@ HRESULT WINAPI Main_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface, HWND hw
|
|||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
DDHAL_SETEXCLUSIVEMODEDATA SetExclusiveMode;
|
||||
|
||||
// check the parameters
|
||||
if ((This->cooperative_level == cooplevel) && ((HWND)This->mDDrawGlobal.lpExclusiveOwner->hWnd == hwnd))
|
||||
|
@ -314,27 +313,13 @@ HRESULT WINAPI Main_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface, HWND hw
|
|||
//mDDrawGlobal.lpExclusiveOwner->dwLocalFlags
|
||||
|
||||
This->cooperative_level = cooplevel;
|
||||
|
||||
SetExclusiveMode.lpDD = &This->mDDrawGlobal;
|
||||
SetExclusiveMode.ddRVal = DDERR_NODRIVERSUPPORT;
|
||||
SetExclusiveMode.dwEnterExcl = This->cooperative_level;
|
||||
|
||||
if (!(This->mDDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETEXCLUSIVEMODE))
|
||||
|
||||
if (This->mDDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETEXCLUSIVEMODE)
|
||||
{
|
||||
SetExclusiveMode.SetExclusiveMode = This->mDDrawGlobal.lpDDCBtmp->HELDD.SetExclusiveMode;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetExclusiveMode.SetExclusiveMode = This->mDDrawGlobal.lpDDCBtmp->HALDD.SetExclusiveMode;
|
||||
}
|
||||
|
||||
if (SetExclusiveMode.SetExclusiveMode(&SetExclusiveMode) != DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return DDERR_NODRIVERSUPPORT;
|
||||
return Hal_DirectDraw_SetCooperativeLevel (iface);
|
||||
}
|
||||
|
||||
return SetExclusiveMode.ddRVal;
|
||||
|
||||
return Hel_DirectDraw_SetCooperativeLevel(iface);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -496,9 +496,9 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_SetClipper (LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWCLIPPER pDDClipper)
|
||||
{
|
||||
/* FIXME not implment */
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB_DD_OK;
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
|
|
|
@ -12,7 +12,25 @@
|
|||
|
||||
|
||||
|
||||
HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
|
||||
{
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
This->HELMemoryAvilable = HEL_GRAPHIC_MEMORY_MAX;
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags = DDHAL_CB32_CANCREATESURFACE;
|
||||
This->mCallbacks.HELDD.CanCreateSurface = HelDdCanCreateSurface;
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags = DDHAL_CB32_CREATESURFACE;
|
||||
This->mCallbacks.HELDD.CreateSurface = HelDdCreateSurface;
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT Hel_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface)
|
||||
{
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
VOID Hel_DirectDraw_Release (LPDIRECTDRAW7 iface)
|
||||
{
|
||||
|
|
|
@ -14,70 +14,132 @@
|
|||
extern DDPIXELFORMAT pixelformats[];
|
||||
extern DWORD pixelformatsCount;
|
||||
|
||||
/*
|
||||
* Direct Draw Callbacks
|
||||
*/
|
||||
|
||||
DWORD CALLBACK
|
||||
HelDdDestroyDriver(LPDDHAL_DESTROYDRIVERDATA lpDestroyDriver)
|
||||
DWORD CALLBACK HelDdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA pccsd)
|
||||
{
|
||||
DX_STUB;
|
||||
DWORD count;
|
||||
|
||||
// FIXME check the HAL pixelformat table if it exists
|
||||
|
||||
// FIXME check how big the surface in byte and report it can be create or not
|
||||
// if we got egunt with HEL memmory
|
||||
|
||||
|
||||
// HEL only support 16bits & 15bits Z-Buffer
|
||||
if ((pccsd->lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_ZBUFFER) &&
|
||||
(pccsd->lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY))
|
||||
{
|
||||
pccsd->ddRVal = DDERR_INVALIDPIXELFORMAT;
|
||||
|
||||
if (DDSD_ZBUFFERBITDEPTH & pccsd->lpDDSurfaceDesc->dwFlags)
|
||||
{
|
||||
if (pccsd->lpDDSurfaceDesc->dwZBufferBitDepth == 16)
|
||||
{
|
||||
pccsd->ddRVal = DD_OK;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwZBufferBitDepth == 16)
|
||||
{
|
||||
pccsd->ddRVal = DD_OK;
|
||||
}
|
||||
}
|
||||
return DDHAL_DRIVER_HANDLED;
|
||||
}
|
||||
|
||||
// Check diffent pixel format
|
||||
if (pccsd->bIsDifferentPixelFormat)
|
||||
{
|
||||
//if(pccsd->ddpfPixelFormat.dwFlags & DDPF_FOURCC)
|
||||
if(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & 0)
|
||||
{
|
||||
switch (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFourCC)
|
||||
{
|
||||
//case FOURCC_YUV422:
|
||||
case 0:
|
||||
// FIXME check if display is 8bmp or not if it return DDERR_INVALIDPIXELFORMAT
|
||||
pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwYUVBitCount = 16;
|
||||
pccsd->ddRVal = DD_OK;
|
||||
return DDHAL_DRIVER_HANDLED;
|
||||
|
||||
default:
|
||||
pccsd->ddRVal = DDERR_INVALIDPIXELFORMAT;
|
||||
return DDHAL_DRIVER_HANDLED;
|
||||
}
|
||||
|
||||
}
|
||||
else if((pccsd->lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_TEXTURE))
|
||||
{
|
||||
for(count=0;count< pixelformatsCount ;count++)
|
||||
{
|
||||
if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFlags != pixelformats->dwFlags)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & (DDPF_YUV | DDPF_FOURCC)))
|
||||
{
|
||||
if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwRGBBitCount != pixelformats->dwRGBBitCount )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & DDPF_RGB)
|
||||
{
|
||||
if ((pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwRBitMask != pixelformats->dwRBitMask) ||
|
||||
(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwGBitMask != pixelformats->dwGBitMask) ||
|
||||
(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwBBitMask != pixelformats->dwBBitMask) ||
|
||||
(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwRGBAlphaBitMask != pixelformats->dwRGBAlphaBitMask))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (pccsd->lpDDSurfaceDesc->dwFlags & DDPF_YUV)
|
||||
{
|
||||
if ((pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFourCC != pixelformats->dwFourCC) ||
|
||||
(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwYUVBitCount != pixelformats->dwYUVBitCount) ||
|
||||
(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwYBitMask != pixelformats->dwYBitMask) ||
|
||||
(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwUBitMask != pixelformats->dwUBitMask) ||
|
||||
(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwVBitMask != pixelformats->dwVBitMask) ||
|
||||
(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwYUVAlphaBitMask != pixelformats->dwYUVAlphaBitMask))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & DDPF_FOURCC)
|
||||
{
|
||||
|
||||
if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFourCC != pixelformats->dwFourCC)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (pccsd->lpDDSurfaceDesc->dwFlags & DDPF_ZPIXELS)
|
||||
{
|
||||
if (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwRGBZBitMask != pixelformats->dwRGBZBitMask)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
pccsd->ddRVal = DD_OK;
|
||||
return DDHAL_DRIVER_HANDLED;
|
||||
}
|
||||
|
||||
// for did not found a pixel format
|
||||
pccsd->ddRVal = DDERR_INVALIDPIXELFORMAT;
|
||||
return DDHAL_DRIVER_HANDLED;
|
||||
}
|
||||
}
|
||||
|
||||
// no diffent pixel format was found so we return OK
|
||||
pccsd->ddRVal = DD_OK;
|
||||
return DDHAL_DRIVER_HANDLED;
|
||||
}
|
||||
|
||||
DWORD CALLBACK
|
||||
HelDdCreateSurface(LPDDHAL_CREATESURFACEDATA lpCreateSurface)
|
||||
DWORD CALLBACK HelDdCreateSurface(LPDDHAL_CREATESURFACEDATA lpCreateSurface)
|
||||
{
|
||||
DX_STUB;
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
/*
|
||||
DWORD CALLBACK HelDdSetColorKey(LPDDHAL_SETCOLORKEYDATA lpSetColorKey)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
*/
|
||||
|
||||
DWORD CALLBACK
|
||||
HelDdSetMode(LPDDHAL_SETMODEDATA SetMode)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
DWORD CALLBACK
|
||||
HelDdWaitForVerticalBlank(LPDDHAL_WAITFORVERTICALBLANKDATA lpWaitForVerticalBlank)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
DWORD CALLBACK
|
||||
HelDdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA lpCanCreateSurface)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
DWORD CALLBACK
|
||||
HelDdCreatePalette(LPDDHAL_CREATEPALETTEDATA lpCreatePalette)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
DWORD CALLBACK
|
||||
HelDdGetScanLine(LPDDHAL_GETSCANLINEDATA lpGetScanLine)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
DWORD CALLBACK
|
||||
HelDdSetExclusiveMode(LPDDHAL_SETEXCLUSIVEMODEDATA lpSetExclusiveMode)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB_str("Not implement yet, return DD_OK for not bsod\n");
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
DWORD CALLBACK
|
||||
HelDdFlipToGDISurface(LPDDHAL_FLIPTOGDISURFACEDATA lpFlipToGDISurface)
|
||||
{
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue