wined3d: Add a separate function for copying stateblock values.

This commit is contained in:
Henri Verbeet 2009-09-30 10:49:11 +02:00 committed by Alexandre Julliard
parent 844dda20ff
commit 345b329217
1 changed files with 19 additions and 11 deletions

View File

@ -164,20 +164,11 @@ static void stateblock_savedstates_set(SAVEDSTATES *states, BOOL value, const st
memset(states->vertexShaderConstantsF, value, sizeof(BOOL) * gl_info->max_vshader_constantsF);
}
static void stateblock_copy(IWineD3DStateBlockImpl *dst, const IWineD3DStateBlockImpl *src)
static void stateblock_copy_values(IWineD3DStateBlockImpl *dst, const IWineD3DStateBlockImpl *src,
const struct wined3d_gl_info *gl_info)
{
const struct wined3d_gl_info *gl_info = &src->wineD3DDevice->adapter->gl_info;
unsigned int l;
dst->lpVtbl = src->lpVtbl;
dst->ref = src->ref;
dst->parent = src->parent;
dst->wineD3DDevice = src->wineD3DDevice;
dst->blockType = src->blockType;
/* Saved states */
stateblock_savedstates_copy(&dst->changed, &src->changed, gl_info);
/* Single items */
dst->gl_primitive_type = src->gl_primitive_type;
dst->vertexDecl = src->vertexDecl;
@ -237,6 +228,23 @@ static void stateblock_copy(IWineD3DStateBlockImpl *dst, const IWineD3DStateBloc
memcpy(dst->pixelShaderConstantF, src->pixelShaderConstantF, sizeof(float) * gl_info->max_pshader_constantsF * 4);
}
static void stateblock_copy(IWineD3DStateBlockImpl *dst, const IWineD3DStateBlockImpl *src)
{
const struct wined3d_gl_info *gl_info = &src->wineD3DDevice->adapter->gl_info;
dst->lpVtbl = src->lpVtbl;
dst->ref = src->ref;
dst->parent = src->parent;
dst->wineD3DDevice = src->wineD3DDevice;
dst->blockType = src->blockType;
/* Saved states */
stateblock_savedstates_copy(&dst->changed, &src->changed, gl_info);
/* Saved values */
stateblock_copy_values(dst, src, gl_info);
}
/**********************************************************
* IWineD3DStateBlockImpl IUnknown parts follows
**********************************************************/