Index: modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XGraphics2D.java =================================================================== --- modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XGraphics2D.java (revision 629779) +++ modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XGraphics2D.java (working copy) @@ -950,6 +950,11 @@ } + @Override + public void flush(){ + flush(display); + } + // Native methods // GC methods @@ -986,4 +991,8 @@ private native int copyArea(long display, long src, long dst, long gc, int src_x, int src_y, int width, int height, int dst_x, int dst_y); + // Send all queued requests to the server + + private native void flush(long display); + } Index: modules/awt/src/main/java/common/java/awt/Component.java =================================================================== --- modules/awt/src/main/java/common/java/awt/Component.java (revision 629779) +++ modules/awt/src/main/java/common/java/awt/Component.java (working copy) @@ -79,6 +79,7 @@ import org.apache.harmony.awt.ClipRegion; import org.apache.harmony.awt.FieldsAccessor; +import org.apache.harmony.awt.gl.CommonGraphics2D; import org.apache.harmony.awt.gl.MultiRectArea; import org.apache.harmony.awt.internal.nls.Messages; import org.apache.harmony.awt.state.State; @@ -3714,6 +3715,7 @@ } else { update(g); } + ((CommonGraphics2D)g).flush(); g.dispose(); } Index: modules/awt/src/main/java/common/org/apache/harmony/awt/gl/CommonGraphics2D.java =================================================================== --- modules/awt/src/main/java/common/org/apache/harmony/awt/gl/CommonGraphics2D.java (revision 629779) +++ modules/awt/src/main/java/common/org/apache/harmony/awt/gl/CommonGraphics2D.java (working copy) @@ -1099,4 +1099,6 @@ //copy.origTransform = new AffineTransform(origTransform); copy.origPoint = new Point(origPoint); } + + public void flush(){} } Index: modules/awt/src/main/native/gl/unix/XGraphics2D.cpp =================================================================== --- modules/awt/src/main/native/gl/unix/XGraphics2D.cpp (revision 629779) +++ modules/awt/src/main/native/gl/unix/XGraphics2D.cpp (working copy) @@ -244,4 +244,10 @@ return ret; } +JNIEXPORT jint JNICALL +Java_org_apache_harmony_awt_gl_linux_XGraphics2D_flush +(JNIEnv *env, jobject obj, jlong display) +{ + XFlush((Display *)display); +} Index: modules/awt/src/main/native/gl/unix/exports.txt =================================================================== --- modules/awt/src/main/native/gl/unix/exports.txt (revision 629779) +++ modules/awt/src/main/native/gl/unix/exports.txt (working copy) @@ -32,6 +32,7 @@ Java_org_apache_harmony_awt_gl_linux_XGraphics2D_setForeground Java_org_apache_harmony_awt_gl_linux_XGraphics2D_setFunction Java_org_apache_harmony_awt_gl_linux_XGraphics2D_setStroke +Java_org_apache_harmony_awt_gl_linux_XGraphics2D_flush Java_org_apache_harmony_awt_gl_linux_XSurface_createSurfData Java_org_apache_harmony_awt_gl_linux_XSurface_dispose Java_org_apache_harmony_awt_gl_linux_PixmapSurface_createSurfData Index: modules/awt/src/main/native/gl/unix/include/org_apache_harmony_awt_gl_linux_XGraphics2D.h =================================================================== --- modules/awt/src/main/native/gl/unix/include/org_apache_harmony_awt_gl_linux_XGraphics2D.h (revision 629779) +++ modules/awt/src/main/native/gl/unix/include/org_apache_harmony_awt_gl_linux_XGraphics2D.h (working copy) @@ -158,6 +158,12 @@ Java_org_apache_harmony_awt_gl_linux_XGraphics2D_setStroke(JNIEnv *, jobject, jlong, jlong, jint, jint, jint, jint, jbyteArray, jint); +/* + * Method: org.apache.harmony.awt.gl.linux.XGraphics2D.flush(J)V + */ +JNIEXPORT jint JNICALL +Java_org_apache_harmony_awt_gl_linux_XGraphics2D_flush(JNIEnv *, jobject, jlong); + #ifdef __cplusplus } #endif Index: modules/awt/src/main/native/gl/unix/XBlitter.cpp =================================================================== --- modules/awt/src/main/native/gl/unix/XBlitter.cpp (revision 629779) +++ modules/awt/src/main/native/gl/unix/XBlitter.cpp (working copy) @@ -361,8 +361,6 @@ XRenderComposite(display, op, srcPict, alphaMask, dstPict, srcX, srcY, 0, 0, dstX, dstY, width, height); - XFlush(display); - if(alphaMask) XRenderFreePicture(display, alphaMask); XRenderFreePicture(display, srcPict); XRenderFreePicture(display, dstPict); @@ -447,7 +445,6 @@ XSetClipRectangles(display, dstSurf->gc, 0, 0, rects, num_rects, Unsorted); XCopyArea(display, srcSurf->drawable, dstSurf->drawable, dstSurf->gc, srcX, srcY, width, height, dstX, dstY); - XFlush(display); if(rects) free(rects); return; @@ -569,8 +566,6 @@ XRenderComposite(display, op, srcPict, alphaMask, dstPict, srcX, srcY, 0, 0, dstX, dstY, width, height); - XFlush(display); - if(alphaMask) XRenderFreePicture(display, alphaMask); XRenderFreePicture(display, srcPict); XRenderFreePicture(display, dstPict);