patches/java-atk-wrapper-01-custom-g-main-context.diff
author yippi
Mon, 27 Sep 2010 21:07:51 +0000
changeset 20108 51df67ca9307
parent 18046 630d2ec3d530
permissions -rw-r--r--
I had these modules listed as being owned by me, but they are really owned by wangke, correcting.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18046
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
     1
diff --git a/jni/src/AtkWrapper.c b/jni/src/AtkWrapper.c
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
     2
index 640b559..fb4324a 100644
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
     3
--- a/jni/src/AtkWrapper.c
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
     4
+++ b/jni/src/AtkWrapper.c
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
     5
@@ -37,15 +37,6 @@
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
     6
 #define GDK_MOD1_MASK (1 << 3)
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
     7
 #define GDK_META_MASK (1 << 28)
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
     8
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
     9
-typedef struct _DummyDispatch DummyDispatch;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    10
-
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    11
-struct _DummyDispatch
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    12
-{
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    13
-	GSourceFunc func;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    14
-	gpointer data;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    15
-	GDestroyNotify destroy;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    16
-};
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    17
-
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    18
 gboolean jaw_debug = FALSE;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    19
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    20
 GMutex *atk_bridge_mutex = NULL;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    21
@@ -53,8 +44,9 @@ GCond *atk_bridge_cond = NULL;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    22
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    23
 GMutex *key_dispatch_mutex = NULL;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    24
 GCond *key_dispatch_cond = NULL;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    25
+static GMainContext *jaw_main_context = NULL;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    26
+
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    27
 static gint key_dispatch_result = KEY_DISPATCH_NOT_DISPATCHED;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    28
-static gboolean (*origin_g_idle_dispatch) (GSource*, GSourceFunc, gpointer);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    29
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    30
 static GModule* module_atk_bridge = NULL;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    31
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    32
@@ -66,32 +58,21 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *javaVM, void *reserve) {
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    33
 JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *javaVM, void *reserve) {
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    34
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    35
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    36
-static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    37
-jaw_dummy_idle_func (gpointer p)
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    38
-{
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    39
-	return FALSE;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    40
-}
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    41
-
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    42
-static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    43
-jaw_idle_dispatch (GSource    *source, 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    44
-		GSourceFunc callback,
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    45
-		gpointer    user_data)
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    46
+static guint  
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    47
+jaw_idle_add (GSourceFunc	function,
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    48
+		gpointer	data,
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    49
+		GMainContext	*context)
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    50
 {
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    51
-	static GSourceFunc gdk_dispatch_func = NULL;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    52
+	GSource *source;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    53
+	guint id;                                  
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    54
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    55
-	if (gdk_dispatch_func == NULL
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    56
-			&& user_data != NULL
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    57
-			&& ((DummyDispatch*)user_data)->func == jaw_dummy_idle_func) {
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    58
-		gdk_dispatch_func = callback;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    59
-
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    60
-		return FALSE;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    61
-	}
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    62
+	source = g_idle_source_new ();             
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    63
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    64
-	if (gdk_dispatch_func == callback) {
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    65
-		return FALSE;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    66
-	}
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    67
+	g_source_set_callback (source, function, data, NULL);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    68
+	id = g_source_attach (source, context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    69
+	g_source_unref (source);                   
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    70
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    71
-	return origin_g_idle_dispatch(source, callback, user_data);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    72
+	return id;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    73
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    74
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    75
 static void jaw_exit_func ()
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    76
@@ -107,6 +88,8 @@ jaw_load_atk_bridge (gpointer p)
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    77
 	GVoidFunc dl_init;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    78
 	if (!g_module_symbol( module_atk_bridge, "gnome_accessibility_module_init", (gpointer*)&dl_init)) {
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    79
 		g_module_close(module_atk_bridge);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    80
+		g_cond_signal(atk_bridge_cond);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    81
+		g_mutex_unlock(atk_bridge_mutex);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    82
 		return FALSE;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    83
 	}
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    84
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    85
@@ -124,6 +107,7 @@ jaw_load_atk_bridge (gpointer p)
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    86
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    87
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    88
 gpointer jni_main_loop(gpointer data) {
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    89
+	g_main_context_push_thread_default( jaw_main_context );
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    90
 	g_main_loop_run( (GMainLoop*)data );
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    91
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    92
 	return NULL;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    93
@@ -132,9 +116,7 @@ gpointer jni_main_loop(gpointer data) {
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    94
 JNIEXPORT jboolean JNICALL Java_org_GNOME_Accessibility_AtkWrapper_initNativeLibrary(JNIEnv *jniEnv, jclass jClass) {
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    95
 	g_type_init();
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    96
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    97
-	// Hook up g_idle_dispatch
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    98
-	origin_g_idle_dispatch = g_idle_funcs.dispatch;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
    99
-	g_idle_funcs.dispatch = jaw_idle_dispatch;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   100
+	jaw_main_context = g_main_context_new();
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   101
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   102
 	const gchar* debug_env = g_getenv("JAW_DEBUG");
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   103
 	if (g_strcmp0(debug_env, "1") == 0) {
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   104
@@ -192,10 +174,6 @@ JNIEXPORT jboolean JNICALL Java_org_GNOME_Accessibility_AtkWrapper_initNativeLib
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   105
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   106
 	key_dispatch_mutex = g_mutex_new();
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   107
 	key_dispatch_cond = g_cond_new();
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   108
-	
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   109
-	// Dummy idle function for jaw_idle_dispatch to get
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   110
-	// the address of gdk_threads_dispatch
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   111
-	gdk_threads_add_idle(jaw_dummy_idle_func, NULL);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   112
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   113
 	return JNI_TRUE;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   114
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   115
@@ -204,9 +182,9 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_loadAtkBridge(JNI
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   116
 	// Enable ATK Bridge so we can load it now
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   117
 	g_setenv("NO_AT_BRIDGE", "0", TRUE);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   118
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   119
-	GMainLoop *main_loop = g_main_loop_new( NULL, FALSE );
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   120
+	GMainLoop *main_loop = g_main_loop_new( jaw_main_context, FALSE );
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   121
 	
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   122
-	g_idle_add(jaw_load_atk_bridge, NULL);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   123
+	jaw_idle_add(jaw_load_atk_bridge, NULL, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   124
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   125
 	// We need to wait for the completion of the loading of ATK Bridge
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   126
 	// in order to ensure event listeners in ATK Bridge are properly
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   127
@@ -304,7 +282,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_focusNotify(
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   128
 	jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   129
 	CallbackPara *para = alloc_callback_para(global_ac);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   130
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   131
-	g_idle_add(focus_notify_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   132
+	jaw_idle_add(focus_notify_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   133
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   134
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   135
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   136
@@ -350,7 +328,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowOpen(
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   137
 	CallbackPara *para = alloc_callback_para(global_ac);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   138
 	para->is_toplevel = (jIsToplevel == JNI_TRUE) ? TRUE : FALSE;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   139
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   140
-	g_idle_add(window_open_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   141
+	jaw_idle_add(window_open_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   142
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   143
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   144
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   145
@@ -402,7 +380,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowClose(
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   146
 	CallbackPara *para = alloc_callback_para(global_ac);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   147
 	para->is_toplevel = (jIsToplevel == JNI_TRUE) ? TRUE : FALSE;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   148
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   149
-	g_idle_add(window_close_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   150
+	jaw_idle_add(window_close_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   151
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   152
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   153
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   154
@@ -432,7 +410,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowMinimize(
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   155
 	jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   156
 	CallbackPara *para = alloc_callback_para(global_ac);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   157
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   158
-	g_idle_add(window_minimize_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   159
+	jaw_idle_add(window_minimize_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   160
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   161
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   162
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   163
@@ -463,7 +441,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowMaximize(
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   164
 	jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   165
 	CallbackPara *para = alloc_callback_para(global_ac);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   166
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   167
-	g_idle_add(window_maximize_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   168
+	jaw_idle_add(window_maximize_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   169
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   170
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   171
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   172
@@ -494,7 +472,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowRestore(
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   173
 	jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   174
 	CallbackPara *para = alloc_callback_para(global_ac);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   175
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   176
-	g_idle_add(window_restore_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   177
+	jaw_idle_add(window_restore_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   178
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   179
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   180
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   181
@@ -525,7 +503,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowActivate(
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   182
 	jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   183
 	CallbackPara *para = alloc_callback_para(global_ac);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   184
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   185
-	g_idle_add(window_activate_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   186
+	jaw_idle_add(window_activate_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   187
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   188
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   189
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   190
@@ -556,7 +534,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowDeactivate(
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   191
 	jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   192
 	CallbackPara *para = alloc_callback_para(global_ac);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   193
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   194
-	g_idle_add(window_deactivate_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   195
+	jaw_idle_add(window_deactivate_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   196
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   197
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   198
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   199
@@ -587,7 +565,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowStateChange
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   200
 	jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   201
 	CallbackPara *para = alloc_callback_para(global_ac);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   202
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   203
-	//g_idle_add(window_state_change_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   204
+	//jaw_idle_add(window_state_change_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   205
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   206
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   207
 static gchar
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   208
@@ -884,7 +862,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_emitSignal(
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   209
 	para->signal_id = (gint)id;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   210
 	para->args = global_args;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   211
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   212
-	g_idle_add(signal_emit_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   213
+	jaw_idle_add(signal_emit_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   214
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   215
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   216
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   217
@@ -923,7 +901,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_objectStateChange
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   218
 		para->state_value = FALSE;
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   219
 	}
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   220
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   221
-	g_idle_add(object_state_change_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   222
+	jaw_idle_add(object_state_change_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   223
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   224
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   225
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   226
@@ -950,7 +928,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_componentAdded(
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   227
 	jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   228
 	CallbackPara *para = alloc_callback_para(global_ac);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   229
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   230
-	g_idle_add(component_added_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   231
+	jaw_idle_add(component_added_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   232
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   233
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   234
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   235
@@ -982,7 +960,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_componentRemoved(
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   236
 	jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   237
 	CallbackPara *para = alloc_callback_para(global_ac);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   238
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   239
-	g_idle_add(component_removed_handler, para);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   240
+	jaw_idle_add(component_removed_handler, para, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   241
 }
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   242
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   243
 static gboolean
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   244
@@ -1080,7 +1058,7 @@ JNIEXPORT jboolean JNICALL Java_org_GNOME_Accessibility_AtkWrapper_dispatchKeyEv
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   245
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   246
 	g_mutex_lock(key_dispatch_mutex);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   247
 	
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   248
-	g_idle_add(key_dispatch_handler, (gpointer)global_key_event);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   249
+	jaw_idle_add(key_dispatch_handler, (gpointer)global_key_event, jaw_main_context);
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   250
 
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   251
 	while (key_dispatch_result == KEY_DISPATCH_NOT_DISPATCHED) {
630d2ec3d530 2010-05-28 Ke Wang <[email protected]>
wangke
parents:
diff changeset
   252
 		g_cond_wait(key_dispatch_cond, key_dispatch_mutex);