d3d: Remove AddRef from IWineD3DDevice_GetSwapChain.
This commit is contained in:
parent
5c4008719c
commit
f84f687e6d
|
@ -219,7 +219,6 @@ HRESULT WINAPI IDirect3DDevice9Impl_GetSwapChain(LPDIRECT3DDEVICE9 iface, UINT
|
||||||
hrc = IWineD3DDevice_GetSwapChain(This->WineD3DDevice, iSwapChain, &swapchain);
|
hrc = IWineD3DDevice_GetSwapChain(This->WineD3DDevice, iSwapChain, &swapchain);
|
||||||
if (hrc == D3D_OK && NULL != swapchain) {
|
if (hrc == D3D_OK && NULL != swapchain) {
|
||||||
IWineD3DSwapChain_GetParent(swapchain, (IUnknown **)pSwapChain);
|
IWineD3DSwapChain_GetParent(swapchain, (IUnknown **)pSwapChain);
|
||||||
IWineD3DSwapChain_Release(swapchain);
|
|
||||||
} else {
|
} else {
|
||||||
*pSwapChain = NULL;
|
*pSwapChain = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1608,7 +1608,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateAdditionalSwapChain(IWineD3DDevic
|
||||||
/* TODO: don't use Impl structures outside of create functions! (a context manager will replace the ->glCtx) */
|
/* TODO: don't use Impl structures outside of create functions! (a context manager will replace the ->glCtx) */
|
||||||
/* and create a new context with the implicit swapchains context as the shared context */
|
/* and create a new context with the implicit swapchains context as the shared context */
|
||||||
object->glCtx = glXCreateContext(object->display, object->visInfo, ((IWineD3DSwapChainImpl *)implSwapChain)->glCtx, GL_TRUE);
|
object->glCtx = glXCreateContext(object->display, object->visInfo, ((IWineD3DSwapChainImpl *)implSwapChain)->glCtx, GL_TRUE);
|
||||||
IWineD3DSwapChain_Release(implSwapChain);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1926,7 +1925,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetSwapChain(IWineD3DDevice *iface, U
|
||||||
|
|
||||||
if(iSwapChain < This->NumberOfSwapChains) {
|
if(iSwapChain < This->NumberOfSwapChains) {
|
||||||
*pSwapChain = This->swapchains[iSwapChain];
|
*pSwapChain = This->swapchains[iSwapChain];
|
||||||
IWineD3DSwapChain_AddRef(*pSwapChain);
|
|
||||||
TRACE("(%p) returning %p\n", This, *pSwapChain);
|
TRACE("(%p) returning %p\n", This, *pSwapChain);
|
||||||
return WINED3D_OK;
|
return WINED3D_OK;
|
||||||
} else {
|
} else {
|
||||||
|
@ -5842,7 +5840,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetBackBuffer(IWineD3DDevice *iface, UI
|
||||||
hr = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapChain);
|
hr = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapChain);
|
||||||
if (hr == WINED3D_OK) {
|
if (hr == WINED3D_OK) {
|
||||||
hr = IWineD3DSwapChain_GetBackBuffer(swapChain, BackBuffer, Type, ppBackBuffer);
|
hr = IWineD3DSwapChain_GetBackBuffer(swapChain, BackBuffer, Type, ppBackBuffer);
|
||||||
IWineD3DSwapChain_Release(swapChain);
|
|
||||||
} else {
|
} else {
|
||||||
*ppBackBuffer = NULL;
|
*ppBackBuffer = NULL;
|
||||||
}
|
}
|
||||||
|
@ -5864,7 +5861,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetDisplayMode(IWineD3DDevice *iface, U
|
||||||
hr = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, (IWineD3DSwapChain **)&swapChain);
|
hr = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, (IWineD3DSwapChain **)&swapChain);
|
||||||
if (hr == WINED3D_OK) {
|
if (hr == WINED3D_OK) {
|
||||||
hr = IWineD3DSwapChain_GetDisplayMode(swapChain, pMode);
|
hr = IWineD3DSwapChain_GetDisplayMode(swapChain, pMode);
|
||||||
IWineD3DSwapChain_Release(swapChain);
|
|
||||||
} else {
|
} else {
|
||||||
FIXME("(%p) Error getting display mode\n", This);
|
FIXME("(%p) Error getting display mode\n", This);
|
||||||
}
|
}
|
||||||
|
@ -6019,7 +6015,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Present(IWineD3DDevice *iface,
|
||||||
IWineD3DDeviceImpl_GetSwapChain(iface, i , (IWineD3DSwapChain **)&swapChain);
|
IWineD3DDeviceImpl_GetSwapChain(iface, i , (IWineD3DSwapChain **)&swapChain);
|
||||||
TRACE("presentinng chain %d, %p\n", i, swapChain);
|
TRACE("presentinng chain %d, %p\n", i, swapChain);
|
||||||
IWineD3DSwapChain_Present(swapChain, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, 0);
|
IWineD3DSwapChain_Present(swapChain, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, 0);
|
||||||
IWineD3DSwapChain_Release(swapChain);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return WINED3D_OK;
|
return WINED3D_OK;
|
||||||
|
@ -6488,7 +6483,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetFrontBufferData(IWineD3DDevice *if
|
||||||
hr = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, (IWineD3DSwapChain **)&swapChain);
|
hr = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, (IWineD3DSwapChain **)&swapChain);
|
||||||
if(hr == WINED3D_OK) {
|
if(hr == WINED3D_OK) {
|
||||||
hr = IWineD3DSwapChain_GetFrontBufferData(swapChain, pDestSurface);
|
hr = IWineD3DSwapChain_GetFrontBufferData(swapChain, pDestSurface);
|
||||||
IWineD3DSwapChain_Release(swapChain);
|
|
||||||
}
|
}
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
@ -6597,7 +6591,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetRasterStatus(IWineD3DDevice *iface
|
||||||
hr = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, (IWineD3DSwapChain **)&swapChain);
|
hr = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, (IWineD3DSwapChain **)&swapChain);
|
||||||
if(hr == WINED3D_OK){
|
if(hr == WINED3D_OK){
|
||||||
hr = IWineD3DSwapChain_GetRasterStatus(swapChain, pRasterStatus);
|
hr = IWineD3DSwapChain_GetRasterStatus(swapChain, pRasterStatus);
|
||||||
IWineD3DSwapChain_Release(swapChain);
|
|
||||||
}else{
|
}else{
|
||||||
FIXME("(%p) IWineD3DSwapChain_GetRasterStatus returned in error\n", This);
|
FIXME("(%p) IWineD3DSwapChain_GetRasterStatus returned in error\n", This);
|
||||||
}
|
}
|
||||||
|
@ -6903,9 +6896,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetFrontBackBuffers(IWineD3DDevice *ifa
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure to release the swapchain */
|
|
||||||
IWineD3DSwapChain_Release((IWineD3DSwapChain *) Swapchain);
|
|
||||||
|
|
||||||
if(FrontImpl && !(FrontImpl->resource.usage & WINED3DUSAGE_RENDERTARGET) ) {
|
if(FrontImpl && !(FrontImpl->resource.usage & WINED3DUSAGE_RENDERTARGET) ) {
|
||||||
ERR("Trying to set a front buffer which doesn't have WINED3DUSAGE_RENDERTARGET usage\n");
|
ERR("Trying to set a front buffer which doesn't have WINED3DUSAGE_RENDERTARGET usage\n");
|
||||||
return WINED3DERR_INVALIDCALL;
|
return WINED3DERR_INVALIDCALL;
|
||||||
|
@ -7432,8 +7422,12 @@ static HRESULT WINAPI IWineD3DDeviceImpl_ActiveRender(IWineD3DDevice* iface,
|
||||||
IWineD3DDevice_GetSwapChain(iface, 0, &implicitSwapchain);
|
IWineD3DDevice_GetSwapChain(iface, 0, &implicitSwapchain);
|
||||||
IWineD3DSurface_GetContainer(RenderSurface, &IID_IWineD3DSwapChain, (void**) &renderSurfaceSwapchain);
|
IWineD3DSurface_GetContainer(RenderSurface, &IID_IWineD3DSwapChain, (void**) &renderSurfaceSwapchain);
|
||||||
IWineD3DSurface_GetContainer(This->renderTarget, &IID_IWineD3DSwapChain, (void **)¤tSwapchain);
|
IWineD3DSurface_GetContainer(This->renderTarget, &IID_IWineD3DSwapChain, (void **)¤tSwapchain);
|
||||||
if (currentSwapchain == NULL)
|
if (currentSwapchain == NULL) {
|
||||||
IWineD3DDevice_GetSwapChain(iface, 0, ¤tSwapchain);
|
IWineD3DDevice_GetSwapChain(iface, 0, ¤tSwapchain);
|
||||||
|
/* GetContainer currently AddRefs, but GetSwapChain doesn't.
|
||||||
|
* Like this the release code for both is the same. */
|
||||||
|
IWineD3DDevice_AddRef(currentSwapchain);
|
||||||
|
}
|
||||||
|
|
||||||
currentSwapchainImpl = (IWineD3DSwapChainImpl*) currentSwapchain;
|
currentSwapchainImpl = (IWineD3DSwapChainImpl*) currentSwapchain;
|
||||||
implicitSwapchainImpl = (IWineD3DSwapChainImpl*) implicitSwapchain;
|
implicitSwapchainImpl = (IWineD3DSwapChainImpl*) implicitSwapchain;
|
||||||
|
@ -7585,7 +7579,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_ActiveRender(IWineD3DDevice* iface,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cfgs != NULL) XFree(cfgs);
|
if (cfgs != NULL) XFree(cfgs);
|
||||||
if (implicitSwapchain != NULL) IWineD3DSwapChain_Release(implicitSwapchain);
|
|
||||||
if (currentSwapchain != NULL) IWineD3DSwapChain_Release(currentSwapchain);
|
if (currentSwapchain != NULL) IWineD3DSwapChain_Release(currentSwapchain);
|
||||||
if (renderSurfaceSwapchain != NULL) IWineD3DSwapChain_Release(renderSurfaceSwapchain);
|
if (renderSurfaceSwapchain != NULL) IWineD3DSwapChain_Release(renderSurfaceSwapchain);
|
||||||
LEAVE_GL();
|
LEAVE_GL();
|
||||||
|
@ -7740,7 +7733,6 @@ static void WINAPI IWineD3DDeviceImpl_SetGammaRamp(IWineD3DDevice * iface, UINT
|
||||||
|
|
||||||
if ((hrc = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapchain)) == WINED3D_OK) {
|
if ((hrc = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapchain)) == WINED3D_OK) {
|
||||||
IWineD3DSwapChain_SetGammaRamp(swapchain, Flags, (WINED3DGAMMARAMP *)pRamp);
|
IWineD3DSwapChain_SetGammaRamp(swapchain, Flags, (WINED3DGAMMARAMP *)pRamp);
|
||||||
IWineD3DSwapChain_Release(swapchain);
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -7753,7 +7745,6 @@ static void WINAPI IWineD3DDeviceImpl_GetGammaRamp(IWineD3DDevice *iface, UINT i
|
||||||
|
|
||||||
if ((hrc = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapchain)) == WINED3D_OK) {
|
if ((hrc = IWineD3DDeviceImpl_GetSwapChain(iface, iSwapChain, &swapchain)) == WINED3D_OK) {
|
||||||
hrc =IWineD3DSwapChain_GetGammaRamp(swapchain, pRamp);
|
hrc =IWineD3DSwapChain_GetGammaRamp(swapchain, pRamp);
|
||||||
IWineD3DSwapChain_Release(swapchain);
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2329,7 +2329,6 @@ void drawPrimitive(IWineD3DDevice *iface,
|
||||||
IWineD3DDevice_GetSwapChain(iface, i, (IWineD3DSwapChain **) &swapchain);
|
IWineD3DDevice_GetSwapChain(iface, i, (IWineD3DSwapChain **) &swapchain);
|
||||||
if(swapchain) {
|
if(swapchain) {
|
||||||
if(swapchain->backBuffer) ((IWineD3DSurfaceImpl *) swapchain->backBuffer[0])->Flags |= SFLAG_GLDIRTY;
|
if(swapchain->backBuffer) ((IWineD3DSurfaceImpl *) swapchain->backBuffer[0])->Flags |= SFLAG_GLDIRTY;
|
||||||
IWineD3DSwapChain_Release( (IWineD3DSwapChain *) swapchain);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -750,7 +750,6 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LockRect(IWineD3DSurface *iface, WINED
|
||||||
notInContext = TRUE;
|
notInContext = TRUE;
|
||||||
/* TODO: check the contexts, to see if were shared with the current context */
|
/* TODO: check the contexts, to see if were shared with the current context */
|
||||||
}
|
}
|
||||||
IWineD3DSwapChain_Release((IWineD3DSwapChain *)implSwapChain);
|
|
||||||
}
|
}
|
||||||
if (swapchain != NULL) IWineD3DSwapChain_Release((IWineD3DSwapChain *)swapchain);
|
if (swapchain != NULL) IWineD3DSwapChain_Release((IWineD3DSwapChain *)swapchain);
|
||||||
if (targetSwapChain != NULL) IWineD3DSwapChain_Release((IWineD3DSwapChain *)targetSwapChain);
|
if (targetSwapChain != NULL) IWineD3DSwapChain_Release((IWineD3DSwapChain *)targetSwapChain);
|
||||||
|
@ -1238,7 +1237,6 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_UnlockRect(IWineD3DSurface *iface) {
|
||||||
} else {
|
} else {
|
||||||
FIXME("unsupported unlocking to Rendering surface surf@%p usage(%s)\n", This, debug_d3dusage(This->resource.usage));
|
FIXME("unsupported unlocking to Rendering surface surf@%p usage(%s)\n", This, debug_d3dusage(This->resource.usage));
|
||||||
}
|
}
|
||||||
IWineD3DSwapChain_Release((IWineD3DSwapChain *)implSwapChain);
|
|
||||||
|
|
||||||
} else if (WINED3DUSAGE_DEPTHSTENCIL & This->resource.usage) { /* stencil surfaces */
|
} else if (WINED3DUSAGE_DEPTHSTENCIL & This->resource.usage) { /* stencil surfaces */
|
||||||
|
|
||||||
|
@ -2704,7 +2702,6 @@ static HRESULT IWineD3DSurfaceImpl_BltOverride(IWineD3DSurfaceImpl *This, RECT *
|
||||||
|
|
||||||
TRACE("Calling GetSwapChain with mydevice = %p\n", myDevice);
|
TRACE("Calling GetSwapChain with mydevice = %p\n", myDevice);
|
||||||
IWineD3DDevice_GetSwapChain((IWineD3DDevice *)myDevice, 0, (IWineD3DSwapChain **)&implSwapChain);
|
IWineD3DDevice_GetSwapChain((IWineD3DDevice *)myDevice, 0, (IWineD3DSwapChain **)&implSwapChain);
|
||||||
IWineD3DSwapChain_Release( (IWineD3DSwapChain *) implSwapChain );
|
|
||||||
if(implSwapChain->backBuffer && This == (IWineD3DSurfaceImpl*) implSwapChain->backBuffer[0]) {
|
if(implSwapChain->backBuffer && This == (IWineD3DSurfaceImpl*) implSwapChain->backBuffer[0]) {
|
||||||
glDrawBuffer(GL_BACK);
|
glDrawBuffer(GL_BACK);
|
||||||
checkGLcall("glDrawBuffer(GL_BACK)");
|
checkGLcall("glDrawBuffer(GL_BACK)");
|
||||||
|
|
|
@ -294,7 +294,6 @@ static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO
|
||||||
glXDestroyContext(oldDisplay, oldContext); /* Should this happen on an active context? seems a bad idea */
|
glXDestroyContext(oldDisplay, oldContext); /* Should this happen on an active context? seems a bad idea */
|
||||||
LEAVE_GL();
|
LEAVE_GL();
|
||||||
}
|
}
|
||||||
IWineD3DSwapChain_Release((IWineD3DSwapChain *)swapChainImpl);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue