PatchSet 5531 
Date: 2005/02/13 22:32:04
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Resynced with GNU Classpath: peer fixes

2005-02-13  Dalibor Topic  <[EMAIL PROTECTED]>

        Resynced with GNU Classpath.

        2005-02-10  Graydon Hoare  <[EMAIL PROTECTED]>

        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c,
        jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,
        jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c,
        jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c:
        Release GDK lock during upcalls.

Members: 
        ChangeLog:1.3575->1.3576 
        
libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c:1.10->1.11
 
        
libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c:1.6->1.7
 
        
libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c:1.4->1.5
 
        
libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c:1.12->1.13
 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3575 kaffe/ChangeLog:1.3576
--- kaffe/ChangeLog:1.3575      Sun Feb 13 22:29:44 2005
+++ kaffe/ChangeLog     Sun Feb 13 22:32:04 2005
@@ -2,6 +2,18 @@
 
        Resynced with GNU Classpath.
 
+       2005-02-10  Graydon Hoare  <[EMAIL PROTECTED]>
+
+        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c,
+        jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,
+        jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c,
+        jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c:
+        Release GDK lock during upcalls.
+
+2005-02-13  Dalibor Topic  <[EMAIL PROTECTED]>
+
+       Resynced with GNU Classpath.
+
        2005-02-10  Michael Koch  <[EMAIL PROTECTED]>
 
         * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImagePainter.c:
Index: 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
diff -u 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c:1.10
 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c:1.11
--- 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c:1.10
       Sat Jan 22 18:25:01 2005
+++ 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
    Sun Feb 13 22:32:09 2005
@@ -1054,10 +1054,12 @@
              GdkEventFocus *event __attribute((unused)),
              jobject peer)
 {
+  gdk_threads_leave ();
   (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                               postFocusEventID,
                               AWT_FOCUS_GAINED,
                               JNI_FALSE);
+  gdk_threads_enter ();
   return FALSE;
 }
 
@@ -1066,9 +1068,11 @@
               GdkEventFocus *event __attribute((unused)),
               jobject peer)
 {
+  gdk_threads_leave ();
   (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                               postFocusEventID,
                               AWT_FOCUS_LOST,
                               JNI_FALSE);
+  gdk_threads_enter ();
   return FALSE;
 }
Index: 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
diff -u 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c:1.6
 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c:1.7
--- 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c:1.6
       Sat Jan 22 18:25:01 2005
+++ 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
   Sun Feb 13 22:32:10 2005
@@ -883,6 +883,7 @@
   switch (event->type)
     {
     case GDK_BUTTON_PRESS:
+      gdk_threads_leave ();
       (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                   postMouseEventID,
                                  AWT_MOUSE_PRESSED, 
@@ -894,12 +895,14 @@
                                  click_count, 
                                  (event->button.button == 3) ? JNI_TRUE :
                                                                JNI_FALSE);
+      gdk_threads_enter ();
       hasBeenDragged = FALSE;
       break;
     case GDK_BUTTON_RELEASE:
       {
        int width, height;
 
+       gdk_threads_leave ();
        (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                    postMouseEventID,
                                    AWT_MOUSE_RELEASED, 
@@ -910,6 +913,7 @@
                                    (jint)event->button.y, 
                                    click_count,
                                    JNI_FALSE);
+       gdk_threads_enter ();
 
        /* Generate an AWT click event only if the release occured in the
           window it was pressed in, and the mouse has not been dragged since
@@ -921,6 +925,7 @@
            && event->button.x <= width 
            && event->button.y <= height)
           {
+           gdk_threads_leave ();
            (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                        postMouseEventID,
                                        AWT_MOUSE_CLICKED, 
@@ -931,6 +936,7 @@
                                        (jint)event->button.y, 
                                        click_count,
                                        JNI_FALSE);
+           gdk_threads_enter ();
           }
       }
       break;
@@ -941,6 +947,7 @@
                                 | GDK_BUTTON4_MASK
                                 | GDK_BUTTON5_MASK))
        {
+         gdk_threads_leave ();
          (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                      postMouseEventID,
                                      AWT_MOUSE_DRAGGED,
@@ -950,44 +957,58 @@
                                      (jint)event->motion.y,
                                      0,
                                      JNI_FALSE);
+         gdk_threads_enter ();
          hasBeenDragged = TRUE;
        }
       else
-        (*gdk_env())->CallVoidMethod (gdk_env(), peer, postMouseEventID,
-                                   AWT_MOUSE_MOVED,
-                                   (jlong)event->motion.time,
-                                   state_to_awt_mods (event->motion.state),
-                                   (jint)event->motion.x,
-                                   (jint)event->motion.y,
-                                   0,
-                                   JNI_FALSE);
+       {
+         gdk_threads_leave ();
+         (*gdk_env())->CallVoidMethod (gdk_env(), peer, postMouseEventID,
+                                       AWT_MOUSE_MOVED,
+                                       (jlong)event->motion.time,
+                                       state_to_awt_mods (event->motion.state),
+                                       (jint)event->motion.x,
+                                       (jint)event->motion.y,
+                                       0,
+                                       JNI_FALSE);
+         gdk_threads_enter ();
+       }
+
       break;
     case GDK_ENTER_NOTIFY:
       /* We are not interested in enter events that are due to
          grab/ungrab and not to actually crossing boundaries */
       if (event->crossing.mode == GDK_CROSSING_NORMAL)
-        (*gdk_env())->CallVoidMethod (gdk_env(), peer, postMouseEventID,
-                                   AWT_MOUSE_ENTERED, 
-                                   (jlong)event->crossing.time,
-                                   state_to_awt_mods_with_button_states 
(event->crossing.state), 
-                                   (jint)event->crossing.x,
-                                   (jint)event->crossing.y, 
-                                   0,
-                                   JNI_FALSE);
+       {
+         gdk_threads_leave ();   
+         (*gdk_env())->CallVoidMethod (gdk_env(), peer, postMouseEventID,
+                                       AWT_MOUSE_ENTERED, 
+                                       (jlong)event->crossing.time,
+                                       state_to_awt_mods_with_button_states 
(event->crossing.state), 
+                                       (jint)event->crossing.x,
+                                       (jint)event->crossing.y, 
+                                       0,
+                                       JNI_FALSE);
+         gdk_threads_enter ();
+       }
       break;
     case GDK_LEAVE_NOTIFY:
       /* We are not interested in leave events that are due to
          grab/ungrab and not to actually crossing boundaries */
       if (event->crossing.mode == GDK_CROSSING_NORMAL)
-       (*gdk_env())->CallVoidMethod (gdk_env(), peer,
-                                   postMouseEventID,
-                                   AWT_MOUSE_EXITED, 
-                                   (jlong)event->crossing.time,
-                                   state_to_awt_mods_with_button_states 
(event->crossing.state),
-                                   (jint)event->crossing.x,
-                                   (jint)event->crossing.y, 
-                                   0,
-                                   JNI_FALSE);
+       {
+         gdk_threads_leave ();   
+         (*gdk_env())->CallVoidMethod (gdk_env(), peer,
+                                       postMouseEventID,
+                                       AWT_MOUSE_EXITED, 
+                                       (jlong)event->crossing.time,
+                                       state_to_awt_mods_with_button_states 
(event->crossing.state),
+                                       (jint)event->crossing.x,
+                                       (jint)event->crossing.y, 
+                                       0,
+                                       JNI_FALSE);
+         gdk_threads_enter ();   
+       }
       break;
     case GDK_CONFIGURE:
       {
@@ -1012,20 +1033,24 @@
       }
       break;
     case GDK_EXPOSE:
+      gdk_threads_leave ();
       (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                   postExposeEventID,
                                   (jint)event->expose.area.x,
                                   (jint)event->expose.area.y,
                                   (jint)event->expose.area.width,
                                   (jint)event->expose.area.height);
+      gdk_threads_enter ();
       break;
 
     case GDK_FOCUS_CHANGE:
+      gdk_threads_leave ();
       (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                  postFocusEventID,
                                  (jint) (event->focus_change.in) ?
                                  AWT_FOCUS_GAINED : AWT_FOCUS_LOST,
                                  JNI_FALSE);
+      gdk_threads_enter ();
       break;
     case GDK_KEY_PRESS:
         if (GTK_IS_WINDOW (widget))
@@ -1033,6 +1058,7 @@
             /*            GdkEventKey *keyevent = (GdkEventKey *) event; */
             /*            g_printerr ("key press event: sent: %d  time: %d  
state: %d  keyval: %d  length: %d  string: %s  hardware_keycode: %d  group: 
%d\n", keyevent->send_event, keyevent->time, keyevent->state, keyevent->keyval, 
keyevent->length, keyevent->string, keyevent->hardware_keycode, 
keyevent->group); */
 
+           gdk_threads_leave ();
             (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                         postKeyEventID,
                                         (jint) AWT_KEY_PRESSED,
@@ -1041,6 +1067,7 @@
                                         keysym_to_awt_keycode (event),
                                         keyevent_to_awt_keychar (event),
                                         keysym_to_awt_keylocation (event));
+           gdk_threads_enter ();
             /* FIXME: generation of key typed events needs to be moved
                to GtkComponentPeer.postKeyEvent.  If the key in a key
                press event is not an "action" key
@@ -1054,6 +1081,7 @@
     case GDK_KEY_RELEASE:
       if (GTK_IS_WINDOW (widget))
         {
+           gdk_threads_leave ();
             (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                         postKeyEventID,
                                         (jint) AWT_KEY_RELEASED,
@@ -1062,6 +1090,7 @@
                                         keysym_to_awt_keycode (event),
                                         keyevent_to_awt_keychar (event),
                                         keysym_to_awt_keylocation (event));
+           gdk_threads_enter ();
             return TRUE;
         }
       else
Index: 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c
diff -u 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c:1.4
 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c:1.5
--- 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c:1.4
    Sat Jan 22 18:25:07 2005
+++ 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c
        Sun Feb 13 22:32:12 2005
@@ -492,5 +492,7 @@
 textcomponent_changed_cb (GtkEditable *editable __attribute__((unused)),
                          jobject peer)
 {
+  gdk_threads_leave ();
   (*gdk_env())->CallVoidMethod (gdk_env(), peer, postTextEventID);
+  gdk_threads_enter ();
 }
Index: 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
diff -u 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c:1.12
 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c:1.13
--- 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c:1.12
  Sat Jan 22 18:25:08 2005
+++ 
kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
       Sun Feb 13 22:32:12 2005
@@ -493,10 +493,12 @@
                  GdkEvent *event __attribute__((unused)),
                  jobject peer)
 {
+  gdk_threads_leave ();
   (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                              postWindowEventID,
                              (jint) AWT_WINDOW_CLOSING,
                              (jobject) NULL, (jint) 0);
+  gdk_threads_enter ();
 }
 
 static void
@@ -504,20 +506,24 @@
                   GdkEvent *event __attribute__((unused)),
                   jobject peer)
 {
+  gdk_threads_leave ();
   (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                              postWindowEventID,
                              (jint) AWT_WINDOW_CLOSED,
                              (jobject) NULL, (jint) 0);
+  gdk_threads_enter ();
 }
 
 static void
 window_show_cb (GtkWidget *widget __attribute__((unused)),
                jobject peer)
 {
+  gdk_threads_leave ();
   (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                              postWindowEventID,
                              (jint) AWT_WINDOW_OPENED,
                              (jobject) NULL, (jint) 0);
+  gdk_threads_enter ();
 }
 
 static void
@@ -528,6 +534,7 @@
   /* FIXME: not sure if this is needed or not. */
   /* Remove the unused attributes if you fix the below.  */
 #if 0
+  gdk_threads_leave ();
   if (GTK_WINDOW (widget)->is_active)
     (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                 postWindowEventID,
@@ -538,6 +545,7 @@
                                 postWindowEventID,
                                 (jint) AWT_WINDOW_DEACTIVATED,
                                 (jobject) NULL, (jint) 0);
+  gdk_threads_enter ();
 #endif
 }
 
@@ -546,6 +554,7 @@
                              GParamSpec *pspec __attribute__((unused)),
                              jobject peer)
 {
+  gdk_threads_leave ();
   if (GTK_WINDOW (widget)->has_toplevel_focus)
     (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                 postWindowEventID,
@@ -556,6 +565,7 @@
                                 postWindowEventID,
                                 (jint) AWT_WINDOW_DEACTIVATED,
                                 (jobject) NULL, (jint) 0);
+  gdk_threads_enter ();
 }
 
 static gboolean
@@ -563,12 +573,14 @@
                    GdkEventFocus *event  __attribute__((unused)),
                    jobject peer)
 {
+  gdk_threads_leave ();
   (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                               postWindowEventID,
                               (jint) AWT_WINDOW_GAINED_FOCUS,
                               (jobject) NULL, (jint) 0);
   /* FIXME: somewhere after this is handled, the child window is
      getting an expose event. */
+  gdk_threads_enter ();
   return FALSE;
 }
 
@@ -577,12 +589,14 @@
                     GdkEventFocus *event __attribute__((unused)),
                     jobject peer)
 {
+  gdk_threads_leave ();
   (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                               postWindowEventID,
                               (jint) AWT_WINDOW_LOST_FOCUS,
                               (jobject) NULL, (jint) 0);
   /* FIXME: somewhere after this is handled, the child window is
      getting an expose event. */
+  gdk_threads_enter ();
   return FALSE;
 }
 
@@ -600,18 +614,22 @@
       if (event->window_state.new_window_state & GDK_WINDOW_STATE_ICONIFIED)
        {
          /* We've been iconified. */
+         gdk_threads_leave ();
          (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                      postWindowEventID,
                                      (jint) AWT_WINDOW_ICONIFIED,
                                      (jobject) NULL, (jint) 0);
+         gdk_threads_enter ();
        }
       else
        {
          /* We've been deiconified. */
+         gdk_threads_leave ();
          (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                                      postWindowEventID,
                                      (jint) AWT_WINDOW_DEICONIFIED,
                                      (jobject) NULL, (jint) 0);
+         gdk_threads_enter ();
        }
     }
 
@@ -624,10 +642,12 @@
 
   new_state |= window_get_new_state (widget);
 
+  gdk_threads_leave ();
   (*gdk_env())->CallVoidMethod (gdk_env(), peer,
                              postWindowEventID,
                              (jint) AWT_WINDOW_STATE_CHANGED,
                              (jobject) NULL, new_state);
+  gdk_threads_enter ();
   return TRUE;
 }
 
@@ -705,12 +725,17 @@
                            NULL,
                            NULL,
                            gu_ex.gu_extents))
-    (*gdk_env())->CallVoidMethod (gdk_env(), peer,
-                               postInsetsChangedEventID,
-                               (jint) extents[2],  /* top */
-                               (jint) extents[0],  /* left */
-                               (jint) extents[3],  /* bottom */
-                               (jint) extents[1]); /* right */
+    {
+      gdk_threads_leave ();
+      (*gdk_env())->CallVoidMethod (gdk_env(), peer,
+                                   postInsetsChangedEventID,
+                                   (jint) extents[2],  /* top */
+                                   (jint) extents[0],  /* left */
+                                   (jint) extents[3],  /* bottom */
+                                   (jint) extents[1]); /* right */
+      gdk_threads_enter ();
+    }
+  
 
   return FALSE;
 }

_______________________________________________
kaffe mailing list
[email protected]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to