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?