blob: fd97bda3ddb5c8bb49deab8c9b3a4989cbc3f97e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
Description: Fix repainting of SolidFill pictures with libcairo > 1.12.x
Author: Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de>
--- 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,
#endif
}
- if (!pForm)
+ if (!pForm && pPicture->pSourcePict)
{
- *pBool = False;
-
- return;
+ /*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
--- 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, xRender
}
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;
}
--- 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 {
|