2012/6/27 Józef Kucia <joseph.ku...@gmail.com>: > --- Hi Józef,
> +void copy_simple_data(const BYTE *src, UINT srcpitch, SIZE src_size, const > PixelFormatDesc *srcformat, > + BYTE *dest, UINT destpitch, SIZE dst_size, const PixelFormatDesc > *destformat, D3DCOLOR colorkey) DECLSPEC_HIDDEN; > + You are not actually using this function in the patch. > + if (dst_box->Left > dst_box->Right || dst_box->Right > desc.Width) > + return D3DERR_INVALIDCALL; > + if (dst_box->Top > dst_box->Bottom || dst_box->Bottom > desc.Height) > + return D3DERR_INVALIDCALL; > + if (dst_box->Front > dst_box->Back || dst_box->Back > desc.Depth) > + return D3DERR_INVALIDCALL; > + > + dst_width = dst_box->Right - dst_box->Left; > + dst_height = dst_box->Bottom - dst_box->Top; > + dst_depth = dst_box->Back - dst_box->Front; > + if (!dst_width || !dst_height || !dst_depth) > + return D3DERR_INVALIDCALL; You can avoid the last check by comparing e.g. (dst_box->Left >= dst_box->Right) above, instead of using ">". > + if (src_box->Left & (src_format_desc->block_width - 1) > + || src_box->Top & (src_format_desc->block_height - 1) > + || (src_box->Right & (src_format_desc->block_width - 1) > + && src_width != desc.Width) > + || (src_box->Bottom & (src_format_desc->block_height - 1) > + && src_height != desc.Height)) > + { > + WARN("Source box (%u, %u, %u, %u) is misaligned\n", > + src_box->Left, src_box->Top, src_box->Right, > src_box->Bottom); > + return D3DXERR_INVALIDDATA; > + } I'm not quite sure of the right and bottom misalignment checks. If the tests confirm that, of course that's okay. > + for (slice = 0; slice < src_depth; slice++) > + { > + src_addr = src_memory; > + src_addr += slice * src_slice_pitch; Shouldn't you take into account src_box->Front?