Hi guys,
I'm a 2013 GSOC applicant and am currently working on porting the GTK+3 AWT 
support for the classpath.
I have worked tirelessly for the past couple of days and finished all of the 
porting process except for the changes required for gdk_threads.

As of GTK+3 3.6.4 gdk_threads_enter() and gdk_threads_leave() have been 
completely deprecated. The documentation asks for the complete removal of these 
calls and for them to be replaced by g_idle_add() calls in the main thread of 
the gtk-peer.

Unfortunately I dont have much experience in handling threads, especially for 
gtk. I dont quiete understand how to use g_idle_add in place of the simple 
thread calls in each function which require blocking in the gtk-peer. I have 
searched for a while now on google but have also not found any concrete 
examples on how to do this.

i'm wondering if someone can provide me with some info on this, for example 
here is a code snippet from gnu_java_awt_peer_gtk_GtkMenuPeer.c;

JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkMenuPeer_addTearOff
  (JNIEnv *env, jobject obj)
{
  void *ptr1;
  GtkWidget *menu, *item;

  gdk_threads_enter ();

  ptr1 = gtkpeer_get_widget (env, obj);

  menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (ptr1));
  item = gtk_tearoff_menu_item_new ();
  gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
  gtk_widget_show (item);

  gdk_threads_leave ();
}

how would i go about changing these gdk_thread calls to a single g_idle_add 
call?

Any help or tips would be greatly appreciated!

Farshad



Reply via email to