- pass a copy of the surface description to the application

- increase the surface reference count when giving the surface pointer
  to the caller
This commit is contained in:
Lionel Ulmer 2005-10-10 10:28:05 +00:00 committed by Alexandre Julliard
parent b6dd5de03f
commit ef735703e8
1 changed files with 15 additions and 4 deletions

View File

@ -459,17 +459,28 @@ Main_DirectDrawSurface_EnumAttachedSurfaces(LPDIRECTDRAWSURFACE7 iface,
{
IDirectDrawSurfaceImpl *This = (IDirectDrawSurfaceImpl *)iface;
IDirectDrawSurfaceImpl* surf;
DDSURFACEDESC2 desc;
TRACE("(%p)->(%p,%p)\n",This,context,cb);
for (surf = This->attached; surf != NULL; surf = surf->next_attached)
{
LPDIRECTDRAWSURFACE7 isurf = ICOM_INTERFACE(surf, IDirectDrawSurface7);
if (TRACE_ON(ddraw)) {
TRACE(" => enumerating surface %p (priv. %p) with description:\n", isurf, surf);
DDRAW_dump_surface_desc(&surf->surface_desc);
}
IDirectDrawSurface7_AddRef(isurf);
desc = surf->surface_desc;
/* check: != DDENUMRET_OK or == DDENUMRET_CANCEL? */
if (cb(ICOM_INTERFACE(surf, IDirectDrawSurface7), &surf->surface_desc,
context) == DDENUMRET_CANCEL)
if (cb(isurf, &desc, context) == DDENUMRET_CANCEL)
break;
}
TRACE(" end of enumeration.\n");
return DD_OK;
}
@ -1097,7 +1108,7 @@ Main_DirectDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect,
return DDERR_INVALIDPARAMS;
}
if (NULL == pDDSD) {
return DDERR_INVALIDPARAMS; /** really ? */
return DDERR_INVALIDPARAMS;
}
/* If the surface is already locked, return busy */