Commit a5febcf7 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

wined3d: Merge the IWineD3DSurface::ReleaseDC() implementations.

parent dcaca722
...@@ -3979,6 +3979,36 @@ static HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetDC(IWineD3DSurface *iface, HDC ...@@ -3979,6 +3979,36 @@ static HRESULT WINAPI IWineD3DBaseSurfaceImpl_GetDC(IWineD3DSurface *iface, HDC
return WINED3D_OK; return WINED3D_OK;
} }
static HRESULT WINAPI IWineD3DBaseSurfaceImpl_ReleaseDC(IWineD3DSurface *iface, HDC dc)
{
IWineD3DSurfaceImpl *surface = (IWineD3DSurfaceImpl *)iface;
TRACE("iface %p, dc %p.\n", iface, dc);
if (!(surface->flags & SFLAG_DCINUSE))
return WINEDDERR_NODC;
if (surface->hDC != dc)
{
WARN("Application tries to release invalid DC %p, surface DC is %p.\n",
dc, surface->hDC);
return WINEDDERR_NODC;
}
if ((surface->flags & SFLAG_PBO) && surface->resource.allocatedMemory)
{
/* Copy the contents of the DIB over to the PBO. */
memcpy(surface->resource.allocatedMemory, surface->dib.bitmap_data, surface->dib.bitmap_size);
}
/* We locked first, so unlock now. */
IWineD3DSurface_Unmap(iface);
surface->flags &= ~SFLAG_DCINUSE;
return WINED3D_OK;
}
/* **************************************************** /* ****************************************************
IWineD3DSurface IWineD3DResource parts follow IWineD3DSurface IWineD3DResource parts follow
**************************************************** */ **************************************************** */
...@@ -4469,34 +4499,6 @@ static void flush_to_framebuffer_drawpixels(IWineD3DSurfaceImpl *surface, ...@@ -4469,34 +4499,6 @@ static void flush_to_framebuffer_drawpixels(IWineD3DSurfaceImpl *surface,
context_release(context); context_release(context);
} }
static HRESULT WINAPI IWineD3DSurfaceImpl_ReleaseDC(IWineD3DSurface *iface, HDC hDC)
{
IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
TRACE("(%p)->(%p)\n",This,hDC);
if (!(This->flags & SFLAG_DCINUSE))
return WINEDDERR_NODC;
if (This->hDC !=hDC) {
WARN("Application tries to release an invalid DC(%p), surface dc is %p\n", hDC, This->hDC);
return WINEDDERR_NODC;
}
if ((This->flags & SFLAG_PBO) && This->resource.allocatedMemory)
{
/* Copy the contents of the DIB over to the PBO */
memcpy(This->resource.allocatedMemory, This->dib.bitmap_data, This->dib.bitmap_size);
}
/* we locked first, so unlock now */
IWineD3DSurface_Unmap(iface);
This->flags &= ~SFLAG_DCINUSE;
return WINED3D_OK;
}
/* ****************************************************** /* ******************************************************
IWineD3DSurface Internal (No mapping to directx api) parts follow IWineD3DSurface Internal (No mapping to directx api) parts follow
****************************************************** */ ****************************************************** */
...@@ -7033,7 +7035,7 @@ const IWineD3DSurfaceVtbl IWineD3DSurface_Vtbl = ...@@ -7033,7 +7035,7 @@ const IWineD3DSurfaceVtbl IWineD3DSurface_Vtbl =
IWineD3DBaseSurfaceImpl_Map, IWineD3DBaseSurfaceImpl_Map,
IWineD3DBaseSurfaceImpl_Unmap, IWineD3DBaseSurfaceImpl_Unmap,
IWineD3DBaseSurfaceImpl_GetDC, IWineD3DBaseSurfaceImpl_GetDC,
IWineD3DSurfaceImpl_ReleaseDC, IWineD3DBaseSurfaceImpl_ReleaseDC,
IWineD3DSurfaceImpl_Flip, IWineD3DSurfaceImpl_Flip,
IWineD3DSurfaceImpl_Blt, IWineD3DSurfaceImpl_Blt,
IWineD3DBaseSurfaceImpl_GetBltStatus, IWineD3DBaseSurfaceImpl_GetBltStatus,
...@@ -7333,30 +7335,6 @@ static HRESULT WINAPI IWineGDISurfaceImpl_Flip(IWineD3DSurface *iface, IWineD3DS ...@@ -7333,30 +7335,6 @@ static HRESULT WINAPI IWineGDISurfaceImpl_Flip(IWineD3DSurface *iface, IWineD3DS
return hr; return hr;
} }
static HRESULT WINAPI IWineGDISurfaceImpl_ReleaseDC(IWineD3DSurface *iface, HDC dc)
{
IWineD3DSurfaceImpl *surface = (IWineD3DSurfaceImpl *)iface;
TRACE("iface %p, dc %p.\n", iface, dc);
if (!(surface->flags & SFLAG_DCINUSE))
return WINEDDERR_NODC;
if (surface->hDC != dc)
{
WARN("Application tries to release invalid DC %p, surface DC is %p.\n",
dc, surface->hDC);
return WINEDDERR_NODC;
}
/* We locked first, so unlock now. */
IWineD3DSurface_Unmap(iface);
surface->flags &= ~SFLAG_DCINUSE;
return WINED3D_OK;
}
static HRESULT WINAPI IWineGDISurfaceImpl_SetMem(IWineD3DSurface *iface, void *mem) static HRESULT WINAPI IWineGDISurfaceImpl_SetMem(IWineD3DSurface *iface, void *mem)
{ {
IWineD3DSurfaceImpl *surface = (IWineD3DSurfaceImpl *)iface; IWineD3DSurfaceImpl *surface = (IWineD3DSurfaceImpl *)iface;
...@@ -7429,7 +7407,7 @@ static const IWineD3DSurfaceVtbl IWineGDISurface_Vtbl = ...@@ -7429,7 +7407,7 @@ static const IWineD3DSurfaceVtbl IWineGDISurface_Vtbl =
IWineD3DBaseSurfaceImpl_Map, IWineD3DBaseSurfaceImpl_Map,
IWineD3DBaseSurfaceImpl_Unmap, IWineD3DBaseSurfaceImpl_Unmap,
IWineD3DBaseSurfaceImpl_GetDC, IWineD3DBaseSurfaceImpl_GetDC,
IWineGDISurfaceImpl_ReleaseDC, IWineD3DBaseSurfaceImpl_ReleaseDC,
IWineGDISurfaceImpl_Flip, IWineGDISurfaceImpl_Flip,
IWineD3DBaseSurfaceImpl_Blt, IWineD3DBaseSurfaceImpl_Blt,
IWineD3DBaseSurfaceImpl_GetBltStatus, IWineD3DBaseSurfaceImpl_GetBltStatus,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment