[X2Go-Dev] Patch to Fix x2goagent / nxagent With New LibCairo

Jim Burnes jvburnes at gmail.com
Fri May 11 01:05:41 CEST 2012


Here you go:



On Thu, May 10, 2012 at 3:21 PM, Jim Burnes <jvburnes at gmail.com> wrote:

> Sure.  I'll just send it as an attachment.   Super busy right now so I'll
> do it later tonight.
> On May 10, 2012 2:14 PM, "Mike Gabriel" <mike.gabriel at das-netzwerkteam.de>
> wrote:
>
>> Hi Jim,
>>
>> On Do 10 Mai 2012 21:49:31 CEST Jim Burnes wrote:
>>
>>  No problem.
>>>
>>
>> I still need a text/plain MIME type attachment with your patch.
>>
>> Thanks!
>> Mike
>>
>>
>>
>> --
>>
>> DAS-NETZWERKTEAM
>> mike gabriel, dorfstr. 27, 24245 barmissen
>> fon: +49 (4302) 281418, fax: +49 (4302) 281419
>>
>> GnuPG Key ID 0xB588399B
>> mail: mike.gabriel at das-netzwerkteam.**de<mike.gabriel at das-netzwerkteam.de>,
>> http://das-netzwerkteam.de
>>
>> freeBusy:
>> https://mail.das-netzwerkteam.**de/freebusy/m.gabriel%40das-**
>> netzwerkteam.de.xfb<https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xfb>
>>
>> _______________________________________________
>> X2Go-Dev mailing list
>> X2Go-Dev at lists.berlios.de
>> https://lists.berlios.de/mailman/listinfo/x2go-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x2go.org/pipermail/x2go-dev/attachments/20120510/33c94409/attachment.html>
-------------- next part --------------
*** x2go/nx-libs-3.5.0.12/nx-X11/programs/Xserver/hw/nxagent/Render.c	2012-03-07 14:04:02.000000000 -0700
--- x2go-new/nx-libs-3.5.0.12/nx-X11/programs/Xserver/hw/nxagent/Render.c	2012-05-10 11:09:39.631786853 -0600
***************
*** 995,1000 ****
--- 995,1030 ----
    #endif
  }
  
+ 
+ int nxagentShouldDeferComposite(PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst)
+ {
+ 
+ int drawableDst;
+ int linkDeferred;
+ int unSyncedSrcMask;
+ 
+ 	drawableDst      =  ( nxagentRenderVersionMajor == 0 && 
+ 	                      nxagentRenderVersionMinor == 8 &&
+ 		              (pDst) -> pDrawable -> type == DRAWABLE_PIXMAP
+                             );
+ 
+ 	linkDeferred     =  ( nxagentOption(DeferLevel) >= 2 &&                                                              
+                               nxagentOption(LinkType) < LINK_TYPE_ADSL
+                             );
+ 		       
+ 	unSyncedSrcMask  =  ( nxagentOption(DeferLevel) == 1 &&
+                               (pDst) -> pDrawable -> type == DRAWABLE_PIXMAP &&
+                               (
+ 			       (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)) ||
+ 	                       ((pMask) && pMask -> pDrawable && (nxagentDrawableStatus((pMask) -> pDrawable) == NotSynchronized))
+ 			      )
+ 			    );
+ 
+ 
+ 	return drawableDst || linkDeferred || unSyncedSrcMask;
+ }
+ 
+ 
  void nxagentComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
                            INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask, INT16 xDst,
                                INT16 yDst, CARD16 width, CARD16 height)
***************
*** 1036,1043 ****
    }
  
    #endif
! 
!   if (NXAGENT_SHOULD_DEFER_COMPOSITE(pSrc, pMask, pDst))
    {
      pDstRegion = nxagentCreateRegion(pDst -> pDrawable, NULL, xDst, yDst, width, height);
  
--- 1066,1073 ----
    }
  
    #endif
!   /* if (NXAGENT_SHOULD_DEFER_COMPOSITE(pSrc, pMask, pDst)) */
!   if (nxagentShouldDeferComposite(pSrc, pMask, pDst))
    {
      pDstRegion = nxagentCreateRegion(pDst -> pDrawable, NULL, xDst, yDst, width, height);
  
***************
*** 1095,1101 ****
      }
    }
  
!   if (pMask != NULL && pMask -> pDrawable != pSrc -> pDrawable &&
            pMask -> pDrawable != pDst -> pDrawable)
    {
      nxagentSynchronizeShmPixmap(pMask -> pDrawable, xMask, yMask, width, height);
--- 1125,1132 ----
      }
    }
  
!   if ((pMask) && (pMask->pDrawable) && 
!           pMask -> pDrawable != pSrc -> pDrawable &&
            pMask -> pDrawable != pDst -> pDrawable)
    {
      nxagentSynchronizeShmPixmap(pMask -> pDrawable, xMask, yMask, width, height);
***************
*** 1259,1265 ****
     * on the real X server.
     */
  
!   if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
    {
      #ifdef TEST
      fprintf(stderr, "nxagentGlyphs: Synchronizing source [%s] at [%p].\n",
--- 1290,1296 ----
     * on the real X server.
     */
  
!   if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
    {
      #ifdef TEST
      fprintf(stderr, "nxagentGlyphs: Synchronizing source [%s] at [%p].\n",
***************
*** 1302,1315 ****
        nxagentSynchronizeBox(pSrc -> pDrawable, &glyphBox, NEVER_BREAK);
      }
  
!     if (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP)
      {
        nxagentIncreasePixmapUsageCounter((PixmapPtr) pSrc -> pDrawable);
      }
    }
  
!   if (pSrc -> pDrawable != pDst -> pDrawable &&
!           nxagentDrawableStatus(pDst -> pDrawable) == NotSynchronized)
    {
      #ifdef TEST
      fprintf(stderr, "nxagentGlyphs: Synchronizing destination [%s] at [%p].\n",
--- 1333,1347 ----
        nxagentSynchronizeBox(pSrc -> pDrawable, &glyphBox, NEVER_BREAK);
      }
  
!     if (pSrc -> pDrawable && (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP))
      {
        nxagentIncreasePixmapUsageCounter((PixmapPtr) pSrc -> pDrawable);
      }
    }
  
! 
!   if (pSrc -> pDrawable && (pSrc -> pDrawable != pDst -> pDrawable &&
!           nxagentDrawableStatus(pDst -> pDrawable) == NotSynchronized))
    {
      #ifdef TEST
      fprintf(stderr, "nxagentGlyphs: Synchronizing destination [%s] at [%p].\n",
***************
*** 1749,1755 ****
      return;
    }
  
!   if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
    {
      #ifdef TEST
      fprintf(stderr, "nxagentTrapezoids: Going to synchronize the source drawable at [%p].\n",
--- 1781,1789 ----
      return;
    }
  
!   /* the following blocks need fixing to ignore null values of pDrawable */
! 
!   if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))  
    {
      #ifdef TEST
      fprintf(stderr, "nxagentTrapezoids: Going to synchronize the source drawable at [%p].\n",
***************
*** 1843,1849 ****
     * operation like nxagentTrapezoids() does.
     */
  
!   if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
    {
      #ifdef TEST
      fprintf(stderr, "nxagentTriangles: Going to synchronize the source drawable at [%p].\n",
--- 1877,1885 ----
     * operation like nxagentTrapezoids() does.
     */
  
! 
! 
!   if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)) 
    {
      #ifdef TEST
      fprintf(stderr, "nxagentTriangles: Going to synchronize the source drawable at [%p].\n",
***************
*** 1920,1926 ****
     * operation like nxagentTrapezoids() does.
     */
  
!   if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
    {
      #ifdef TEST
      fprintf(stderr, "nxagentTriStrip: Going to synchronize the source drawable at [%p].\n",
--- 1956,1963 ----
     * operation like nxagentTrapezoids() does.
     */
  
! 
!   if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
    {
      #ifdef TEST
      fprintf(stderr, "nxagentTriStrip: Going to synchronize the source drawable at [%p].\n",
***************
*** 1997,2003 ****
     * operation like nxagentTrapezoids() does.
     */
  
!   if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
    {
      #ifdef TEST
      fprintf(stderr, "nxagentTriFan: Going to synchronize the source drawable at [%p].\n",
--- 2034,2041 ----
     * operation like nxagentTrapezoids() does.
     */
  
! 
!   if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))  
    {
      #ifdef TEST
      fprintf(stderr, "nxagentTriFan: Going to synchronize the source drawable at [%p].\n",


More information about the x2go-dev mailing list