Hello,

I'm the submitter of JDK-8068529
<https://bugs.openjdk.java.net/browse/JDK-8068529> and I'd like to respond
to the comments of this bug, but I don't have a openjdk account. Help at
openjdk suggested to post this here.

In reply to the comments of 2015-01-12: without xrender, XSync is indeed
called in X11SurfaceData.c, in function X11SD_GetSharedImage. If you change
the code to include a counter and a printf/fflush statement, you can see
that XSync is called each time the Java-method paint() is called.


*int xsync_counter = 0;*XImage* X11SD_GetSharedImage(X11SDOps *xsdo, jint
width, jint height,
                             jint maxWidth, jint maxHeight, jboolean
readBits)
{
    XImage * retImage = NULL;
    if (cachedXImage != NULL &&
        X11SD_CachedXImageFits(width, height, maxWidth, maxHeight,
                               xsdo->depth, readBits)) {
        /* sync so previous data gets flushed */


*        xsync_counter++;        printf("XSync %d in
X11SurfaceData.c:GetSharedImage\r\n", xsync_counter); fflush(stdout);*
XSync(awt_display, False);
        retImage = cachedXImage;
        cachedXImage = (XImage *)NULL;
    } else if (width * height * xsdo->depth > 0x10000) {
        retImage = X11SD_CreateSharedImage(xsdo, width, height);
    }
    return retImage;
}

This XSync call causes each paint to be displayed on the screen.

Regards,
Jeroen

Reply via email to