[Spice-devel] [PATCH] display/res: fix ie9 rendering
Hans de Goede
hdegoede at redhat.com
Wed Apr 6 07:50:34 PDT 2011
Ack.
On 04/06/2011 04:41 PM, Alon Levy wrote:
> Internet Explorer 9 renders cursors and other things by reusing the same
> SURFOBJ (i.e. surfobj->iUniq is constant) but changing the pallete.
> We were wrongly ignoring the pallette's iUniq because the XO_TABLE flag
> was not set. That flag should not be checked when calculating the key for
> our cache. When that flag is ignored we correctly calculate a key that uses
> both the surf->iUniq and the colortrans->iUniq together (64 bit from two 32
> bit values).
> ---
> display/res.c | 8 ++------
> 1 files changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/display/res.c b/display/res.c
> index ec5b900..51de54e 100644
> --- a/display/res.c
> +++ b/display/res.c
> @@ -1966,15 +1966,11 @@ static BOOL CacheSizeTest(PDev *pdev, SURFOBJ *surf)
>
> static _inline UINT64 get_unique(SURFOBJ *surf, XLATEOBJ *color_trans)
> {
> - int pallette;
> - ULONG pallette_unique;
> -
> - pallette = color_trans&& (color_trans->flXlate& XO_TABLE);
> - pallette_unique = pallette ? color_trans->iUniq : 0;
> + ULONG pallette_unique = color_trans ? color_trans->iUniq : 0;
>
> // NOTE: GDI sometimes gives many instances of the exactly same SURFOBJ (hsurf& iUniq),
> // but with (fjBitmap& BMF_DONTCACHE). This opposed to what documented in the MSDN.
> - if (!surf->iUniq || (surf->fjBitmap& BMF_DONTCACHE) || (pallette&& !pallette_unique)) {
> + if (!surf->iUniq || (surf->fjBitmap& BMF_DONTCACHE) || !pallette_unique) {
> return 0;
> } else {
> return (surf->iUniq | ((UINT64)pallette_unique<< 32));
More information about the Spice-devel
mailing list