fixed so we return almost same flags in DD->GBL->dwFlags left todo is the DDRAWI_DRIVERINFO2

svn path=/trunk/; revision=25036
This commit is contained in:
Magnus Olsen 2006-12-03 17:54:25 +00:00
parent bdd9cf7f66
commit a75646d6df

View file

@ -21,8 +21,8 @@ HRESULT WINAPI
StartDirectDraw(LPDIRECTDRAW* iface, LPGUID lpGuid) StartDirectDraw(LPDIRECTDRAW* iface, LPGUID lpGuid)
{ {
LPDDRAWI_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT)iface; LPDDRAWI_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT)iface;
DWORD hal_ret; DWORD hal_ret = DD_FALSE;
DWORD hel_ret; DWORD hel_ret = DD_FALSE;
DEVMODE devmode; DEVMODE devmode;
HBITMAP hbmp; HBITMAP hbmp;
const UINT bmiSize = sizeof(BITMAPINFOHEADER) + 0x10; const UINT bmiSize = sizeof(BITMAPINFOHEADER) + 0x10;
@ -30,6 +30,7 @@ StartDirectDraw(LPDIRECTDRAW* iface, LPGUID lpGuid)
BITMAPINFO *pbmi; BITMAPINFO *pbmi;
DWORD *pMasks; DWORD *pMasks;
INT devicetypes = 0; INT devicetypes = 0;
DWORD dwFlags = 0;
DX_WINDBG_trace(); DX_WINDBG_trace();
@ -93,6 +94,8 @@ StartDirectDraw(LPDIRECTDRAW* iface, LPGUID lpGuid)
/* cObsolete is undoc in msdn it being use in CreateDCA */ /* cObsolete is undoc in msdn it being use in CreateDCA */
RtlCopyMemory(&ddgbl.cObsolete,&"DISPLAY",7); RtlCopyMemory(&ddgbl.cObsolete,&"DISPLAY",7);
RtlCopyMemory(&ddgbl.cDriverName,&"DISPLAY",7); RtlCopyMemory(&ddgbl.cDriverName,&"DISPLAY",7);
dwFlags |= DDRAWI_DISPLAYDRV | DDRAWI_GDIDRV;
} }
else if (lpGuid == (LPGUID) DDCREATE_HARDWAREONLY) else if (lpGuid == (LPGUID) DDCREATE_HARDWAREONLY)
@ -105,6 +108,8 @@ StartDirectDraw(LPDIRECTDRAW* iface, LPGUID lpGuid)
/* cObsolete is undoc in msdn it being use in CreateDCA */ /* cObsolete is undoc in msdn it being use in CreateDCA */
RtlCopyMemory(&ddgbl.cObsolete,&"DISPLAY",7); RtlCopyMemory(&ddgbl.cObsolete,&"DISPLAY",7);
RtlCopyMemory(&ddgbl.cDriverName,&"DISPLAY",7); RtlCopyMemory(&ddgbl.cDriverName,&"DISPLAY",7);
dwFlags |= DDRAWI_DISPLAYDRV | DDRAWI_GDIDRV;
} }
else if (lpGuid == (LPGUID) DDCREATE_EMULATIONONLY) else if (lpGuid == (LPGUID) DDCREATE_EMULATIONONLY)
@ -117,6 +122,8 @@ StartDirectDraw(LPDIRECTDRAW* iface, LPGUID lpGuid)
/* cObsolete is undoc in msdn it being use in CreateDCA */ /* cObsolete is undoc in msdn it being use in CreateDCA */
RtlCopyMemory(&ddgbl.cObsolete,&"DISPLAY",7); RtlCopyMemory(&ddgbl.cObsolete,&"DISPLAY",7);
RtlCopyMemory(&ddgbl.cDriverName,&"DISPLAY",7); RtlCopyMemory(&ddgbl.cDriverName,&"DISPLAY",7);
dwFlags |= DDRAWI_DISPLAYDRV | DDRAWI_GDIDRV;
} }
else else
{ {
@ -180,27 +187,42 @@ StartDirectDraw(LPDIRECTDRAW* iface, LPGUID lpGuid)
switch (devicetypes) switch (devicetypes)
{ {
case 2: case 2:
hal_ret = StartDirectDrawHal(iface); hal_ret = StartDirectDrawHal(iface);
hel_ret = DD_OK; This->lpLcl->lpDDCB->HELDD.dwFlags = 0;
This->lpLcl->lpDDCB->HELDD.dwFlags = 0;
break; break;
case 3: case 3:
hel_ret = StartDirectDrawHel(iface); hel_ret = StartDirectDrawHel(iface);
hal_ret = DD_OK;
This->lpLcl->lpDDCB->HALDD.dwFlags = 0; This->lpLcl->lpDDCB->HALDD.dwFlags = 0;
break; break;
default: default:
hal_ret = StartDirectDrawHal(iface); hal_ret = StartDirectDrawHal(iface);
hel_ret = StartDirectDrawHel(iface); hel_ret = StartDirectDrawHel(iface);
} }
if ((hal_ret!=DD_OK) && (hel_ret!=DD_OK)) if (hal_ret!=DD_OK)
{ {
DX_STUB_str("DDERR_NODIRECTDRAWSUPPORT"); if (hel_ret!=DD_OK)
return DDERR_NODIRECTDRAWSUPPORT; {
} DX_STUB_str("DDERR_NODIRECTDRAWSUPPORT");
return DDERR_NODIRECTDRAWSUPPORT;
}
dwFlags |= DDRAWI_NOHARDWARE;
}
if (hel_ret!=DD_OK)
{
dwFlags |= DDRAWI_NOEMULATION;
}
else
{
dwFlags |= DDRAWI_EMULATIONINITIALIZED;
}
This->lpLcl->lpGbl->dwFlags = dwFlags | DDRAWI_ATTACHEDTODESKTOP;
This->lpLcl->hDD = This->lpLcl->lpGbl->hDD; This->lpLcl->hDD = This->lpLcl->lpGbl->hDD;