/[classpath]/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
ViewVC logotype

Diff of /classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3.2.3 by gnu_andrew, Sun Aug 7 18:34:12 2005 UTC revision 1.3.2.4 by gnu_andrew, Sat Sep 10 15:32:01 2005 UTC
# Line 97  Java_gnu_java_awt_peer_gtk_GtkImage_load Line 97  Java_gnu_java_awt_peer_gtk_GtkImage_load
97    return JNI_TRUE;    return JNI_TRUE;
98  }  }
99    
100    /*
101     * Creates the image from an array of java bytes.
102     */
103    JNIEXPORT jboolean JNICALL
104    Java_gnu_java_awt_peer_gtk_GtkImage_loadImageFromData
105      (JNIEnv *env, jobject obj, jbyteArray data)
106    {
107      jbyte *src;
108      GdkPixbuf* pixbuf;
109      GdkPixbufLoader* loader;
110      int len;
111      int width;
112      int height;
113    
114      gdk_threads_enter ();
115    
116      src = (*env)->GetByteArrayElements (env, data, NULL);
117      len = (*env)->GetArrayLength (env, data);
118    
119      loader = gdk_pixbuf_loader_new ();
120    
121      gdk_pixbuf_loader_write (loader, (guchar *)src, len, NULL);
122      gdk_pixbuf_loader_close (loader, NULL);
123    
124      (*env)->ReleaseByteArrayElements (env, data, src, 0);
125    
126      pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
127    
128      if (pixbuf == NULL)
129        {
130          createRawData (env, obj, NULL);
131    
132          gdk_threads_leave ();
133    
134          return JNI_FALSE;
135        }
136    
137      width =  gdk_pixbuf_get_width (pixbuf);
138      height = gdk_pixbuf_get_height (pixbuf);
139    
140      createRawData (env, obj, pixbuf);
141      setWidthHeight(env, obj, width, height);
142    
143      gdk_threads_leave ();
144    
145      return JNI_TRUE;
146    }
147    
148    JNIEXPORT void JNICALL
149    Java_gnu_java_awt_peer_gtk_GtkImage_createFromPixbuf
150    (JNIEnv *env, jobject obj)
151    {
152      int width, heigth;
153      GdkPixbuf *pixbuf = (GdkPixbuf *) getData (env, obj);
154      gdk_threads_enter ();
155      width =  gdk_pixbuf_get_width (pixbuf);
156      heigth = gdk_pixbuf_get_height (pixbuf);
157      gdk_threads_leave ();
158      setWidthHeight(env, obj, width, heigth);
159    }
160    
161  /**  /**
162   * Returns a copy of the pixel data as a java array.   * Returns a copy of the pixel data as a java array.
163   */   */
# Line 117  Java_gnu_java_awt_peer_gtk_GtkImage_getP Line 178  Java_gnu_java_awt_peer_gtk_GtkImage_getP
178    height = gdk_pixbuf_get_height (pixbuf);    height = gdk_pixbuf_get_height (pixbuf);
179    rowstride = gdk_pixbuf_get_rowstride (pixbuf);    rowstride = gdk_pixbuf_get_rowstride (pixbuf);
180    
   /* Must release the GDK lock before allocating memory through the  
      JVM, since some JVMs use the same lock for allocations and  
      finalization.  Deadlock can occur on those JVMs. */  
   gdk_threads_leave ();  
   
181    result_array = (*env)->NewIntArray (env, (width * height));    result_array = (*env)->NewIntArray (env, (width * height));
182    
   gdk_threads_enter ();  
   
183    dst = result_array_iter =    dst = result_array_iter =
184      (*env)->GetIntArrayElements (env, result_array, NULL);      (*env)->GetIntArrayElements (env, result_array, NULL);
185    
# Line 308  Java_gnu_java_awt_peer_gtk_GtkImage_draw Line 362  Java_gnu_java_awt_peer_gtk_GtkImage_draw
362    
363    gdk_threads_enter ();    gdk_threads_enter ();
364        
365      if (width <= 0 || height <= 0)
366        {
367          gdk_threads_leave ();
368          return;
369        }
370    
371    bgColor = ((bg_red & 0xFF) << 16) |    bgColor = ((bg_red & 0xFF) << 16) |
372      ((bg_green & 0xFF) << 8) | (bg_blue & 0xFF);      ((bg_green & 0xFF) << 8) | (bg_blue & 0xFF);
373            
# Line 369  JNIEXPORT void JNICALL Line 429  JNIEXPORT void JNICALL
429  Java_gnu_java_awt_peer_gtk_GtkImage_drawPixelsScaledFlipped  Java_gnu_java_awt_peer_gtk_GtkImage_drawPixelsScaledFlipped
430  (JNIEnv *env, jobject obj, jobject gc_obj,  (JNIEnv *env, jobject obj, jobject gc_obj,
431   jint bg_red, jint bg_green, jint bg_blue,   jint bg_red, jint bg_green, jint bg_blue,
432    #if GTK_MINOR_VERSION > 4
433   jboolean flipx, jboolean flipy,   jboolean flipx, jboolean flipy,
434    #else
435     jboolean flipx __attribute__((unused)),
436     jboolean flipy __attribute__((unused)),
437    #endif
438   jint srcx, jint srcy, jint srcwidth, jint srcheight,   jint srcx, jint srcy, jint srcwidth, jint srcheight,
439   jint dstx, jint dsty, jint dstwidth, jint dstheight,   jint dstx, jint dsty, jint dstwidth, jint dstheight,
440   jboolean composite)   jboolean composite)
# Line 381  Java_gnu_java_awt_peer_gtk_GtkImage_draw Line 446  Java_gnu_java_awt_peer_gtk_GtkImage_draw
446    
447    gdk_threads_enter ();    gdk_threads_enter ();
448        
449      if (srcwidth <= 0 || srcheight <= 0
450          || dstwidth <= 0 || dstheight <= 0)
451        {
452          gdk_threads_leave ();
453          return;
454        }
455    
456    bgColor = ((bg_red & 0xFF) << 16) |    bgColor = ((bg_red & 0xFF) << 16) |
457      ((bg_green & 0xFF) << 8) | (bg_blue & 0xFF);      ((bg_green & 0xFF) << 8) | (bg_blue & 0xFF);
458            

Legend:
Removed from v.1.3.2.3  
changed lines
  Added in v.1.3.2.4

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26