2006-06-01 Sven de Marothy <[EMAIL PROTECTED]>
* gnu/java/awt/peer/gtk/BufferedImageGraphics.java
* gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
(nativeCopyArea): Change stride parameter to use # of ints.
* gnu/java/awt/peer/gtk/ComponentGraphics.java
(ComponentGraphics): Set background, clip.
* gnu/java/awt/peer/gtk/CairoGraphics2D.java
(Cairographics2D): Don't set clip.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
Add flush.
Index: gnu/java/awt/peer/gtk/BufferedImageGraphics.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/BufferedImageGraphics.java,v
retrieving revision 1.5
diff -U3 -r1.5 BufferedImageGraphics.java
--- gnu/java/awt/peer/gtk/BufferedImageGraphics.java 1 Jun 2006 07:43:14 -0000 1.5
+++ gnu/java/awt/peer/gtk/BufferedImageGraphics.java 2 Jun 2006 16:17:45 -0000
@@ -231,7 +231,7 @@
if( y + dy + height >= surface.height ) // bottom
height = surface.height - dy - y;
- surface.copyAreaNative(x, y, width, height, dx, dy, surface.width * 4);
+ surface.copyAreaNative(x, y, width, height, dx, dy, surface.width);
updateBufferedImage(x + dx, y + dy, width, height);
}
Index: gnu/java/awt/peer/gtk/CairoGraphics2D.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java,v
retrieving revision 1.11
diff -U3 -r1.11 CairoGraphics2D.java
--- gnu/java/awt/peer/gtk/CairoGraphics2D.java 1 Jun 2006 17:50:58 -0000 1.11
+++ gnu/java/awt/peer/gtk/CairoGraphics2D.java 2 Jun 2006 16:17:45 -0000
@@ -257,7 +257,6 @@
setPaint(paint);
setStroke(stroke);
setTransform(transform);
- setClip(clip);
}
/**
Index: gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java,v
retrieving revision 1.2
diff -U3 -r1.2 CairoSurfaceGraphics.java
--- gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java 30 May 2006 04:21:53 -0000 1.2
+++ gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java 2 Jun 2006 16:17:45 -0000
@@ -115,6 +115,6 @@
if( y + dy + height >= surface.height ) // bottom
height = surface.height - dy - y;
- surface.copyAreaNative(x, y, width, height, dx, dy, surface.width * 4);
+ surface.copyAreaNative(x, y, width, height, dx, dy, surface.width);
}
}
Index: gnu/java/awt/peer/gtk/ComponentGraphics.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java,v
retrieving revision 1.5
diff -U3 -r1.5 ComponentGraphics.java
--- gnu/java/awt/peer/gtk/ComponentGraphics.java 31 May 2006 00:04:30 -0000 1.5
+++ gnu/java/awt/peer/gtk/ComponentGraphics.java 2 Jun 2006 16:17:45 -0000
@@ -80,6 +80,9 @@
component = cg.component;
cairo_t = initState(component);
copy( cg, cairo_t );
+ setBackground(component.awtComponent.getBackground());
+ setClip(component.awtComponent.getBounds());
+ setColor(component.awtComponent.getForeground());
}
/**
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.11
diff -U3 -r1.11 gnu_java_awt_peer_gtk_CairoSurface.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c 1 Jun 2006 04:26:40 -0000 1.11
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c 2 Jun 2006 16:17:47 -0000
@@ -223,17 +223,17 @@
jint *pixeldata = (jint *)getNativeObject(env, obj, BUFFER);
g_assert( pixeldata != NULL );
- temp = g_malloc( w * 4 );
+ temp = g_malloc( w * sizeof( jint ) );
g_assert( temp != NULL );
- srcOffset = x + y * (stride >> 2);
- dstOffset = (x + dx) + (y + dy) * (stride >> 2);
+ srcOffset = x + y * stride;
+ dstOffset = (x + dx) + (y + dy) * stride;
for( row = 0; row < h; row++)
{
- memcpy( temp, pixeldata + srcOffset, w * 4 );
- memcpy( pixeldata + dstOffset, temp, w * 4 );
- srcOffset += (stride >> 2);
- dstOffset += (stride >> 2);
+ memcpy( temp, pixeldata + srcOffset, w * sizeof(jint) );
+ memcpy( pixeldata + dstOffset, temp, w * sizeof(jint) );
+ srcOffset += stride;
+ dstOffset += stride;
}
g_free( temp );
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.8
diff -U3 -r1.8 gnu_java_awt_peer_gtk_ComponentGraphics.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c 31 May 2006 21:29:48 -0000 1.8
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c 2 Jun 2006 16:17:47 -0000
@@ -54,6 +54,34 @@
#include "gnu_java_awt_peer_gtk_ComponentGraphics.h"
+static short flush_scheduled = 0;
+
+static gboolean flush (gpointer data __attribute__((unused)))
+{
+ gdk_threads_enter ();
+
+ XFlush (GDK_DISPLAY ());
+ flush_scheduled = 0;
+
+ gdk_threads_leave ();
+
+ return FALSE;
+}
+
+/* The minimum time period between calls to XFlush, in
+ milliseconds. */
+#define MINIMUM_FLUSH_PERIOD 20
+
+/* schedule_flush must be called with the GDK lock held. */
+static void
+schedule_flush ()
+{
+ if (!flush_scheduled)
+ {
+ g_timeout_add (MINIMUM_FLUSH_PERIOD, flush, NULL);
+ flush_scheduled = 1;
+ }
+}
void cp_gtk_grab_current_drawable(GtkWidget *widget, GdkDrawable **draw,
GdkWindow **win)
@@ -148,6 +176,7 @@
Java_gnu_java_awt_peer_gtk_ComponentGraphics_end_1gdk_1drawing
(JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)))
{
+ schedule_flush ();
gdk_threads_leave();
}