From db870556433fd737640f7038e0583242724e2d52 Mon Sep 17 00:00:00 2001 From: Oleksandr Shneyder Date: Tue, 10 Feb 2015 19:29:53 +0100 Subject: Fix repainting of SolidFill pictures with libcairo > 1.12.x (204_nxagent_repaint-solidpict.full.patch). --- nx-X11/programs/Xserver/hw/nxagent/Render.c | 16 +++++++++++----- nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c | 4 ++++ nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h | 1 + 3 files changed, 16 insertions(+), 5 deletions(-) (limited to 'nx-X11/programs/Xserver/hw/nxagent') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Render.c b/nx-X11/programs/Xserver/hw/nxagent/Render.c index 29bffaa35..41a1ec02e 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Render.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Render.c @@ -2689,11 +2689,17 @@ void nxagentReconnectPicture(pointer p0, XID x1, void *p2) #endif } - if (!pForm) - { - *pBool = False; - - return; + if (!pForm && pPicture->pSourcePict) + { + /*possible we need to add support for other picture types, for example gradients...*/ + switch(pPicture->pSourcePict->type) + { + case SourcePictTypeSolidFill: + nxagentPicturePriv(pPicture) -> picture = XRenderCreateSolidFill(nxagentDisplay, + (const XRenderColor*) &pPicture->pSourcePict->solidFill.fullColor); + break; + } + return; } #ifdef TEST diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c index d9054b4b6..4b342ebcf 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c +++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c @@ -1137,6 +1137,10 @@ CreateSolidPicture (Picture pid, xRenderColor *color, int *error) } pPicture->pSourcePict->type = SourcePictTypeSolidFill; pPicture->pSourcePict->solidFill.color = xRenderColorToCard32(*color); + pPicture->pSourcePict->solidFill.fullColor.alpha=color->alpha; + pPicture->pSourcePict->solidFill.fullColor.red=color->red; + pPicture->pSourcePict->solidFill.fullColor.green=color->green; + pPicture->pSourcePict->solidFill.fullColor.blue=color->blue; return pPicture; } diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h b/nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h index 0d1a8e1d8..b2679257c 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h +++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h @@ -95,6 +95,7 @@ typedef struct _PictTransform { typedef struct _PictSolidFill { unsigned int type; CARD32 color; + xRenderColor fullColor; } PictSolidFill, *PictSolidFillPtr; typedef struct _PictGradientStop { -- cgit v1.2.3