TiledTextureImage breaks BeginUpdate/EndUpdate in these cases:
- The update is encompassed by more than one tile
- The update is encompassed by a single tile that isn't the first tile
- The update is a non-rectangular region that covers more than one tile
Fixed by using signed instead of unsigned integers in tile loops, correcting
an incorrect device offset and correcting the region returned by BeginUpdate.
Although we currently have buffer rotation disabled for shadow buffers when
using the GL layer manager, if you re-enable it, it will be broken. This is
because we don't take into account the rotation when handling updates.
This fixes that handling by offsetting the updated region by the rotation,
and if that new region crosses texture boundaries, splitting it into
multiple uploads.
Drawing of rotated buffers relies on texture-wrapping, but in the case of
tiled textures, this would cause each individual tile to wrap instead of
wrapping the compound texture.
Add a special case for tiled textures that manually does the wrapping.
Currently fixup_unbounded_boxes assumes that the extents are tight when we only
have one box. This is not always true. e.g. when we tesselate boxes we can end
up with only one box which is smaller than the extents and the extents are not
updated.
--HG--
extra : rebase_source : 5e01da7d845c1cd34f9e87d5c7de22dafe9df7a4
Although we currently have buffer rotation disabled for shadow buffers when
using the GL layer manager, if you re-enable it, it will be broken. This is
because we don't take into account the rotation when handling uploads.
This fixes that handling by offsetting the updated region by the rotation and
adds an assertion if the updated region crosses a rotation boundary (which
should never happen).
Drawing of rotated buffers relies on texture-wrapping, but in the case of
tiled textures, this would cause each individual tile to wrap instead of
wrapping the compound texture.
Add a special case for tiled textures that manually does the wrapping.
TiledTextureImage breaks BeginUpdate/EndUpdate in these cases:
- The update is encompassed by more than one tile
- The update is encompassed by a single tile that isn't the first tile
- The update is a non-rectangular region that covers more than one tile
Fixed by using signed instead of unsigned integers in tile loops, correcting
an incorrect device offset and correcting the region returned by BeginUpdate.
Cairo requires image surfaces to have a particular stride alignment.
Sometimes the texture we get back from Direct3D doesn't meet these
requirements. In that case, copy to a different buffer that meets
these requirments.
--HG--
extra : rebase_source : b4a09d5dd33c921d36158f33fc2cd386ebe57883
This changes the only remaining callers (in nsMathMLChar) to pass the
correct language, which they were not previously doing, which should
improve the correctness of font selection and also reduce the number of
unique font metrics objects requested (which helps nsFontCache
effectiveness). Those callers, however, remain the odd font users
within all of layout.
In configure, we detect the DXSDK using the windows registry and set MOZ_DIRECTX_SDK_PATH accordingly. This patch fixes a bug whereby we weren't using that to actually find headers, and were relying on the half-universal DXSDK_DIR variable instead, which is not always defined and in case of multiple versions installed may not point to the most recent one.
Change AppUnitsPerDevPixel to return a PRUint32. It should never return
negative values and it is used in initializer lists that expect unsigned
values, which is not valid c++0x.
I have also change the member variables to be unsigned and converted
a sentinel value to use 0 instead of -1. UINT32_MAX should work fine too
if you like it better.