diff options
author | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:58:59 +0200 |
---|---|---|
committer | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:58:59 +0200 |
commit | b7494f082ad56049c24927afdf89abc852fe06bb (patch) | |
tree | 332640e859cbc9711ed183fe1e86895d1d945ca5 /nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c | |
parent | c078024019d334eb96fbfaf922c64297c9a0c6e0 (diff) | |
download | nx-libs-b7494f082ad56049c24927afdf89abc852fe06bb.tar.gz nx-libs-b7494f082ad56049c24927afdf89abc852fe06bb.tar.bz2 nx-libs-b7494f082ad56049c24927afdf89abc852fe06bb.zip |
Imported nxagent-3.4.0-8.tar.gznxagent/3.4.0-8
Summary: Imported nxagent-3.4.0-8.tar.gz
Keywords:
Imported nxagent-3.4.0-8.tar.gz
into Git repository
Diffstat (limited to 'nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c')
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c index 18697a576..be961c400 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c +++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c @@ -62,6 +62,7 @@ #include "Screen.h" #include "Pixmaps.h" #include "Drawable.h" +#include "Render.h" #define PANIC #define WARNING @@ -1063,7 +1064,47 @@ static void initGradient(SourcePictPtr pGradient, int stopCount, static PicturePtr createSourcePicture(void) { PicturePtr pPicture; - pPicture = (PicturePtr) xalloc(sizeof(PictureRec)); + + extern int nxagentPicturePrivateIndex; + + unsigned int totalPictureSize; + + DevUnion *ppriv; + + char *privPictureRecAddr; + + int i; + + /* + * Compute size of entire PictureRect, plus privates. + */ + + totalPictureSize = sizeof(PictureRec) + + picturePrivateCount * sizeof(DevUnion) + + sizeof(nxagentPrivPictureRec); + + pPicture = (PicturePtr) xalloc(totalPictureSize); + + if (pPicture != NULL) + { + ppriv = (DevUnion *) (pPicture + 1); + + for (i = 0; i < picturePrivateCount; ++i) + { + /* + * Other privates are inaccessible. + */ + + ppriv[i].ptr = NULL; + } + + privPictureRecAddr = (char *) &ppriv[picturePrivateCount]; + + ppriv[nxagentPicturePrivateIndex].ptr = (pointer) privPictureRecAddr; + + pPicture -> devPrivates = ppriv; + } + pPicture->pDrawable = 0; pPicture->pFormat = 0; pPicture->pNext = 0; @@ -1697,6 +1738,10 @@ FreePicture (pointer value, if (--pPicture->refcnt == 0) { +#ifdef NXAGENT_SERVER + nxagentDestroyPicture(pPicture); +#endif + if (pPicture->transform) xfree (pPicture->transform); if (!pPicture->pDrawable) { |