wined3d: Handle stateblock capture for default lights created while recording.
For non-recorded stateblocks a light always exists in the device stateblock as well, since that's where it's copied from. However, when SetLightEnable() is called for a light that didn't a exist yet while recording a stateblock, the light is only created on the recorded stateblock.
This commit is contained in:
parent
5bac33d358
commit
f5c8153edd
|
@ -573,8 +573,17 @@ static void record_lights(IWineD3DStateBlockImpl *This, const IWineD3DStateBlock
|
||||||
|
|
||||||
if (!updated)
|
if (!updated)
|
||||||
{
|
{
|
||||||
ERR("Light %u in stateblock %p does not exist in device stateblock %p.\n",
|
/* This can happen if the light was originally created as a
|
||||||
|
* default light for SetLightEnable() while recording. */
|
||||||
|
WARN("Light %u in stateblock %p does not exist in device stateblock %p.\n",
|
||||||
src->OriginalIndex, This, targetStateBlock);
|
src->OriginalIndex, This, targetStateBlock);
|
||||||
|
|
||||||
|
src->OriginalParms = WINED3D_default_light;
|
||||||
|
if (src->glIndex != -1)
|
||||||
|
{
|
||||||
|
This->activeLights[src->glIndex] = NULL;
|
||||||
|
src->glIndex = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue