diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 42d9308fe23..0e13085c765 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3389,29 +3389,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, W case WINED3DRS_SPECULARMATERIALSOURCE : case WINED3DRS_AMBIENTMATERIALSOURCE : case WINED3DRS_EMISSIVEMATERIALSOURCE : - StateTable[STATE_RENDER(State)].apply(STATE_RENDER(State), This->stateBlock); - break; - case WINED3DRS_LINEPATTERN : - { - union { - DWORD d; - WINED3DLINEPATTERN lp; - } tmppattern; - tmppattern.d = Value; - - TRACE("Line pattern: repeat %d bits %x\n", tmppattern.lp.wRepeatFactor, tmppattern.lp.wLinePattern); - - if (tmppattern.lp.wRepeatFactor) { - glLineStipple(tmppattern.lp.wRepeatFactor, tmppattern.lp.wLinePattern); - checkGLcall("glLineStipple(repeat, linepattern)"); - glEnable(GL_LINE_STIPPLE); - checkGLcall("glEnable(GL_LINE_STIPPLE);"); - } else { - glDisable(GL_LINE_STIPPLE); - checkGLcall("glDisable(GL_LINE_STIPPLE);"); - } - } + StateTable[STATE_RENDER(State)].apply(STATE_RENDER(State), This->stateBlock); break; case WINED3DRS_ZBIAS : /* D3D8 only */ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 24006cdf205..155872b5638 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -849,6 +849,26 @@ static void state_colormat(DWORD state, IWineD3DStateBlockImpl *stateblock) { } } +static void state_linepattern(DWORD state, IWineD3DStateBlockImpl *stateblock) { + union { + DWORD d; + WINED3DLINEPATTERN lp; + } tmppattern; + tmppattern.d = stateblock->renderState[WINED3DRS_LINEPATTERN]; + + TRACE("Line pattern: repeat %d bits %x\n", tmppattern.lp.wRepeatFactor, tmppattern.lp.wLinePattern); + + if (tmppattern.lp.wRepeatFactor) { + glLineStipple(tmppattern.lp.wRepeatFactor, tmppattern.lp.wLinePattern); + checkGLcall("glLineStipple(repeat, linepattern)"); + glEnable(GL_LINE_STIPPLE); + checkGLcall("glEnable(GL_LINE_STIPPLE);"); + } else { + glDisable(GL_LINE_STIPPLE); + checkGLcall("glDisable(GL_LINE_STIPPLE);"); + } +} + const struct StateEntry StateTable[] = { /* State name representative, apply function */ @@ -862,7 +882,7 @@ const struct StateEntry StateTable[] = { /* 7, WINED3DRS_ZENABLE */ STATE_RENDER(WINED3DRS_ZENABLE), state_zenable }, { /* 8, WINED3DRS_FILLMODE */ STATE_RENDER(WINED3DRS_FILLMODE), state_fillmode }, { /* 9, WINED3DRS_SHADEMODE */ STATE_RENDER(WINED3DRS_SHADEMODE), state_shademode }, - { /* 10, WINED3DRS_LINEPATTERN */ STATE_RENDER(WINED3DRS_LINEPATTERN), state_unknown }, + { /* 10, WINED3DRS_LINEPATTERN */ STATE_RENDER(WINED3DRS_LINEPATTERN), state_linepattern }, { /* 11, WINED3DRS_MONOENABLE */ STATE_RENDER(WINED3DRS_MONOENABLE), state_unknown }, { /* 12, WINED3DRS_ROP2 */ STATE_RENDER(WINED3DRS_ROP2), state_unknown }, { /* 13, WINED3DRS_PLANEMASK */ STATE_RENDER(WINED3DRS_PLANEMASK), state_unknown },