CVSROOT: /sources/classpath Module name: classpath Changes by: Sven de Marothy <smarothy> 06/06/04 19:44:39
Modified files: . : ChangeLog gnu/java/awt/peer/gtk: CairoSurface.java ComponentGraphicsCopy.java GtkVolatileImage.java include : gnu_java_awt_peer_gtk_CairoSurface.h native/jni/gtk-peer: gnu_java_awt_peer_gtk_CairoSurface.c gnu_java_awt_peer_gtk_ComponentGraphics.c Log message: 2006-06-04 Sven de Marothy <[EMAIL PROTECTED]> * gnu/java/awt/peer/gtk/CairoSurface.java (getFlippedBuffer): New method. (getGtkImage): Renamed method. * gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java * gnu/java/awt/peer/gtk/GtkVolatileImage.java Renamed getSharedImage to getGtkImage. * include/gnu_java_awt_peer_gtk_CairoSurface.h * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c (getFlippedBuffer): New method * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c Avoid window casts. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/classpath/ChangeLog?cvsroot=classpath&r1=1.7648&r2=1.7649 http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/CairoSurface.java?cvsroot=classpath&r1=1.5&r2=1.6 http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java?cvsroot=classpath&r1=1.1&r2=1.2 http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/GtkVolatileImage.java?cvsroot=classpath&r1=1.4&r2=1.5 http://cvs.savannah.gnu.org/viewcvs/classpath/include/gnu_java_awt_peer_gtk_CairoSurface.h?cvsroot=classpath&r1=1.1&r2=1.2 http://cvs.savannah.gnu.org/viewcvs/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c?cvsroot=classpath&r1=1.14&r2=1.15 http://cvs.savannah.gnu.org/viewcvs/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c?cvsroot=classpath&r1=1.11&r2=1.12 Patches: Index: ChangeLog =================================================================== RCS file: /sources/classpath/classpath/ChangeLog,v retrieving revision 1.7648 retrieving revision 1.7649 diff -u -b -r1.7648 -r1.7649 --- ChangeLog 4 Jun 2006 18:15:04 -0000 1.7648 +++ ChangeLog 4 Jun 2006 19:44:39 -0000 1.7649 @@ -1,3 +1,17 @@ +2006-06-04 Sven de Marothy <[EMAIL PROTECTED]> + + * gnu/java/awt/peer/gtk/CairoSurface.java + (getFlippedBuffer): New method. + (getGtkImage): Renamed method. + * gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java + * gnu/java/awt/peer/gtk/GtkVolatileImage.java + Renamed getSharedImage to getGtkImage. + * include/gnu_java_awt_peer_gtk_CairoSurface.h + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c + (getFlippedBuffer): New method + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c + Avoid window casts. + 2006-03-20 Andrew John Hughes <[EMAIL PROTECTED]> * java/lang/System.java: Index: gnu/java/awt/peer/gtk/CairoSurface.java =================================================================== RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/CairoSurface.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -b -r1.5 -r1.6 --- gnu/java/awt/peer/gtk/CairoSurface.java 1 Jun 2006 13:57:39 -0000 1.5 +++ gnu/java/awt/peer/gtk/CairoSurface.java 4 Jun 2006 19:44:39 -0000 1.6 @@ -123,6 +123,8 @@ */ native void setPixels(int[] pixels); + native long getFlippedBuffer(int size); + /** * Create a cairo_surface_t with specified width and height. * The format will be ARGB32 with premultiplied alpha and native bit @@ -197,11 +199,11 @@ } /** - * Return a GtkImage which shares its data with this Cairo surface. + * Return a GtkImage from this Cairo surface. */ - public GtkImage getSharedGtkImage() + public GtkImage getGtkImage() { - return new GtkImage( width, height, bufferPointer ); + return new GtkImage( width, height, getFlippedBuffer( width * height )); } /** Index: gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java =================================================================== RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java 30 May 2006 04:21:53 -0000 1.1 +++ gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java 4 Jun 2006 19:44:39 -0000 1.2 @@ -83,7 +83,7 @@ this.component = component; this.width = width; this.height = height; - gtkimage = surface.getSharedGtkImage(); + gtkimage = surface.getGtkImage(); getPixbuf( component, gtkimage ); } Index: gnu/java/awt/peer/gtk/GtkVolatileImage.java =================================================================== RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GtkVolatileImage.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -b -r1.4 -r1.5 --- gnu/java/awt/peer/gtk/GtkVolatileImage.java 3 Jun 2006 22:41:41 -0000 1.4 +++ gnu/java/awt/peer/gtk/GtkVolatileImage.java 4 Jun 2006 19:44:39 -0000 1.5 @@ -127,7 +127,7 @@ { if( needsUpdate ) { - update( offScreen.getSharedGtkImage() ); + update( offScreen.getGtkImage() ); needsUpdate = false; return VolatileImage.IMAGE_RESTORED; } Index: include/gnu_java_awt_peer_gtk_CairoSurface.h =================================================================== RCS file: /sources/classpath/classpath/include/gnu_java_awt_peer_gtk_CairoSurface.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- include/gnu_java_awt_peer_gtk_CairoSurface.h 29 May 2006 16:14:59 -0000 1.1 +++ include/gnu_java_awt_peer_gtk_CairoSurface.h 4 Jun 2006 19:44:39 -0000 1.2 @@ -18,6 +18,7 @@ JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_getPixels (JNIEnv *env, jobject, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_setPixels (JNIEnv *env, jobject, jintArray); JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_newCairoContext (JNIEnv *env, jobject); +JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_getFlippedBuffer (JNIEnv *env, jobject, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_copyAreaNative (JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint, jint); #ifdef __cplusplus Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c =================================================================== RCS file: /sources/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -b -r1.14 -r1.15 --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c 3 Jun 2006 05:21:05 -0000 1.14 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c 4 Jun 2006 19:44:39 -0000 1.15 @@ -208,6 +208,29 @@ (*env)->ReleaseDoubleArrayElements (env, java_matrix, native_matrix, 0); } +JNIEXPORT jlong JNICALL +Java_gnu_java_awt_peer_gtk_CairoSurface_getFlippedBuffer +(JNIEnv *env, jobject obj, jint size) +{ + jint *dst; + jint *src = (jint *)getNativeObject(env, obj, BUFFER); + int i; + int t; + + g_assert( src != NULL ); + dst = g_malloc( size * sizeof( jint ) ); + + for(i = 0; i < size; i++ ) + { + t = (src[i] & 0x0000FF) << 16; + dst[i] = (src[i] & 0x00FF0000) >> 16; + dst[i] |= (src[i] & 0xFF00FF00); + dst[i] |= t; + } + + return PTR_TO_JLONG(dst); +} + /** * Create and return a cairo context for drawing to the surface. */ Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c =================================================================== RCS file: /sources/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -b -r1.11 -r1.12 --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c 4 Jun 2006 17:52:05 -0000 1.11 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c 4 Jun 2006 19:44:39 -0000 1.12 @@ -227,13 +227,10 @@ widget = GTK_WIDGET (ptr); g_assert (widget != NULL); - while(widget->window != NULL) - widget = GTK_WIDGET(widget->window); pixmap = cp_gtk_get_pixmap( env, img ); - - gc = gdk_gc_new(GDK_DRAWABLE(widget)); - gdk_draw_drawable(GDK_DRAWABLE(widget), + gc = gdk_gc_new(GDK_DRAWABLE(widget->window)); + gdk_draw_drawable(GDK_DRAWABLE(widget->window), gc, pixmap, 0, 0,