[java-atk-wrapper: 1/2] Call jaw_impl_get_instance from the application thread
- From: Samuel Thibault <sthibaul src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [java-atk-wrapper: 1/2] Call jaw_impl_get_instance from the application thread
- Date: Wed, 1 May 2019 22:04:38 +0000 (UTC)
commit e7588805b89552a6154356cc013927484f7bf0b6
Author: Samuel Thibault <samuel thibault ens-lyon org>
Date: Wed May 1 22:04:24 2019 +0000
Call jaw_impl_get_instance from the application thread
not our glib loop. The getAccessibleContext method may indeed
call application methods, e.g. through getValueAt involving a
MemberTableModel, and these methods may not be thread-safe.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=766774
jni/src/AtkWrapper.c | 532 +++++++++------------------------------------------
1 file changed, 94 insertions(+), 438 deletions(-)
---
diff --git a/jni/src/AtkWrapper.c b/jni/src/AtkWrapper.c
index 7d80bb9..9e9a4f5 100644
--- a/jni/src/AtkWrapper.c
+++ b/jni/src/AtkWrapper.c
@@ -180,6 +180,8 @@ enum _SignalType {
typedef struct _CallbackPara {
jobject global_ac;
+ JawImpl *jaw_impl;
+ JawImpl *child_impl;
gboolean is_toplevel;
SignalType signal_id;
jobjectArray args;
@@ -188,12 +190,21 @@ typedef struct _CallbackPara {
} CallbackPara;
static CallbackPara*
-alloc_callback_para (jobject ac)
+alloc_callback_para (JNIEnv *jniEnv, jobject ac)
{
if (ac == NULL)
return NULL;
+ JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, ac);
+ if (jaw_impl == NULL)
+ {
+ if (jaw_debug)
+ g_warning("\nalloc_callback_para: jaw_impl == NULL\n");
+ return NULL;
+ }
CallbackPara *para = g_new(CallbackPara, 1);
para->global_ac = ac;
+ para->jaw_impl = jaw_impl;
+ para->child_impl = NULL;
para->args = NULL;
return para;
@@ -228,33 +239,8 @@ static gboolean
focus_notify_handler (gpointer p)
{
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("\nfocus_notify_handler: env == NULL\n");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("\nfocus_notify_handler: global_ac == NULL\n");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
- JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("\nfocus_notify_handler: jaw_impl == NULL\n");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
atk_object_notify_state_change(atk_obj,
ATK_STATE_SHOWING,
1);
@@ -275,7 +261,7 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_focusNotify(JNIEnv *jniEnv,
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
jni_main_idle_add(focus_notify_handler, para);
}
@@ -283,33 +269,8 @@ static gboolean
window_open_handler (gpointer p)
{
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
gboolean is_toplevel = para->is_toplevel;
-
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- fprintf(stderr,"\n *** window_open_handler: jniEnv == NULL *** \n");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- if (global_ac == NULL)
- {
- if (jaw_debug)
- fprintf(stderr,"\n *** window_open_handler: global_ac == NULL *** \n");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("window_open_handler: jaw_impl == NULL");
- }
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
if (!g_strcmp0(atk_role_get_name(atk_object_get_role(atk_obj)),
"redundant object"))
@@ -356,7 +317,7 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowOpen(JNIEnv *jniEnv,
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
para->is_toplevel = (jIsToplevel == JNI_TRUE) ? TRUE : FALSE;
jni_main_idle_add(window_open_handler, para);
}
@@ -365,35 +326,8 @@ static gboolean
window_close_handler (gpointer p)
{
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
gboolean is_toplevel = para->is_toplevel;
-
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("window_close_handler: env == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("window_close_handler: global_ac == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
- JawImpl *jaw_impl = jaw_impl_find_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("window_close_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
if (!g_strcmp0(atk_role_get_name(atk_object_get_role(atk_obj)), "redundant object"))
{
@@ -438,7 +372,7 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowClose(JNIEnv *jniEnv,
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
para->is_toplevel = (jIsToplevel == JNI_TRUE) ? TRUE : FALSE;
jni_main_idle_add(window_close_handler, para);
}
@@ -447,34 +381,8 @@ static gboolean
window_minimize_handler (gpointer p)
{
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("window_minimize_handler: env == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("window_minimize_handler: global_ac == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
- JawImpl* jaw_impl = jaw_impl_find_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("window_minimize_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
g_signal_emit_by_name(atk_obj, "minimize", 0);
free_callback_para(para);
@@ -493,7 +401,7 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowMinimize(JNIEnv *jniEnv,
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
jni_main_idle_add(window_minimize_handler, para);
}
@@ -501,35 +409,8 @@ static gboolean
window_maximize_handler (gpointer p)
{
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
-
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("window_maximize_handler: env == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("window_maximize_handler: global_ac == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
- JawImpl* jaw_impl = jaw_impl_find_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("window_maximize_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
g_signal_emit_by_name(atk_obj, "maximize", 0);
free_callback_para(para);
@@ -547,7 +428,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowMaximize(JN
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac );
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac );
jni_main_idle_add(window_maximize_handler, para);
}
@@ -555,35 +436,8 @@ static gboolean
window_restore_handler (gpointer p)
{
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
-
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("window_restore_handler: env == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("window_restore_handler: global_ac == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- JawImpl* jaw_impl = jaw_impl_find_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("window_restore_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
g_signal_emit_by_name(atk_obj, "restore", 0);
free_callback_para(para);
@@ -601,7 +455,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowRestore(JNI
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
jni_main_idle_add(window_restore_handler, para);
}
@@ -609,34 +463,8 @@ static gboolean
window_activate_handler (gpointer p)
{
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
-
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("window_activate_handler: env == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("window_activate_handler: global_ac == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
- JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("window_activate_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
g_signal_emit_by_name(atk_obj, "activate", 0);
free_callback_para(para);
@@ -654,7 +482,7 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowActivate(JN
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
jni_main_idle_add(window_activate_handler, para);
}
@@ -662,34 +490,8 @@ static gboolean
window_deactivate_handler (gpointer p)
{
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("window_deactivate_handler: env == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("window_deactivate_handler: global_ac == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
- JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("window_deactivate_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
g_signal_emit_by_name(atk_obj, "deactivate", 0);
free_callback_para(para);
@@ -708,7 +510,7 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowDeactivate(JNIEnv *jniEnv,
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
jni_main_idle_add(window_deactivate_handler, para);
}
@@ -716,35 +518,8 @@ static gboolean
window_state_change_handler (gpointer p)
{
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
-
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("window_state_change_handler: env == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("window_state_change_handler: global_ac == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
- JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("window_state_change_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
g_signal_emit_by_name(atk_obj, "state-change", 0);
free_callback_para(para);
@@ -763,7 +538,7 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowStateChange(JNIEnv *jniEnv
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
jni_main_idle_add(window_state_change_handler, para);
}
@@ -779,37 +554,9 @@ static gboolean
signal_emit_handler (gpointer p)
{
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
JNIEnv *jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("signal_emit_handler: jniEnv == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
jobjectArray args = para->args;
-
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("signal_emit_handler: global_ac == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- JawImpl* jaw_impl = jaw_impl_find_instance(jniEnv, global_ac);
-
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("signal_emit_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
switch (para->signal_id)
{
@@ -848,24 +595,10 @@ signal_emit_handler (gpointer p)
{
gint child_index = get_int_value(jniEnv,
(*jniEnv)->GetObjectArrayElement(jniEnv, args, 0));
- jobject child_ac = (*jniEnv)->GetObjectArrayElement(jniEnv, args, 1);
- JawImpl *child_impl = jaw_impl_get_instance(jniEnv, child_ac);
- if (child_impl == NULL)
- {
- if (jaw_debug)
- g_warning("signal_emit_handler: child_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
- if (!child_impl)
- {
- break;
- }
-
g_signal_emit_by_name(atk_obj,
"children_changed::add",
child_index,
- child_impl);
+ para->child_impl);
break;
}
case Sig_Object_Children_Changed_Remove:
@@ -889,23 +622,9 @@ signal_emit_handler (gpointer p)
}
case Sig_Object_Active_Descendant_Changed:
{
- jobject child_ac = (*jniEnv)->GetObjectArrayElement(jniEnv, args, 0);
- JawImpl *child_impl = jaw_impl_get_instance(jniEnv, child_ac);
- if (child_impl == NULL)
- {
- if (jaw_debug)
- g_warning("signal_emit_handler: child_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
- if (!child_impl)
- {
- break;
- }
-
g_signal_emit_by_name(atk_obj,
"active_descendant_changed",
- child_impl);
+ para->child_impl);
break;
}
case Sig_Object_Selection_Changed:
@@ -1072,9 +791,61 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_emitSignal(JNIEnv *jniEnv,
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
jobjectArray global_args = (jobjectArray)(*jniEnv)->NewGlobalRef(jniEnv, args);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
para->signal_id = (gint)id;
para->args = global_args;
+ switch (para->signal_id)
+ {
+ case Sig_Text_Caret_Moved:
+ case Sig_Text_Property_Changed_Insert:
+ case Sig_Text_Property_Changed_Delete:
+ case Sig_Text_Property_Changed_Replace:
+ case Sig_Object_Children_Changed_Remove:
+ case Sig_Object_Selection_Changed:
+ case Sig_Object_Visible_Data_Changed:
+ case Sig_Object_Property_Change_Accessible_Actions:
+ case Sig_Object_Property_Change_Accessible_Value:
+ case Sig_Object_Property_Change_Accessible_Description:
+ case Sig_Object_Property_Change_Accessible_Name:
+ case Sig_Object_Property_Change_Accessible_Hypertext_Offset:
+ case Sig_Object_Property_Change_Accessible_Table_Caption:
+ case Sig_Object_Property_Change_Accessible_Table_Summary:
+ case Sig_Object_Property_Change_Accessible_Table_Column_Header:
+ case Sig_Object_Property_Change_Accessible_Table_Column_Description:
+ case Sig_Object_Property_Change_Accessible_Table_Row_Header:
+ case Sig_Object_Property_Change_Accessible_Table_Row_Description:
+ case Sig_Table_Model_Changed:
+ case Sig_Text_Property_Changed:
+ break;
+ case Sig_Object_Children_Changed_Add:
+ {
+ jobject child_ac = (*jniEnv)->GetObjectArrayElement(jniEnv, args, 1);
+ JawImpl *child_impl = jaw_impl_get_instance(jniEnv, child_ac);
+ if (child_impl == NULL)
+ {
+ if (jaw_debug)
+ g_warning("Java_org_GNOME_Accessibility_AtkWrapper_emitSignal: child_impl == NULL");
+ free_callback_para(para);
+ return;
+ }
+ para->child_impl = child_impl;
+ break;
+ }
+ case Sig_Object_Active_Descendant_Changed:
+ {
+ jobject child_ac = (*jniEnv)->GetObjectArrayElement(jniEnv, args, 0);
+ JawImpl *child_impl = jaw_impl_get_instance(jniEnv, child_ac);
+ if (child_impl == NULL)
+ {
+ if (jaw_debug)
+ g_warning("Java_org_GNOME_Accessibility_AtkWrapper_emitSignal: child_impl == NULL");
+ free_callback_para(para);
+ return;
+ }
+ para->child_impl = child_impl;
+ break;
+ }
+ }
jni_main_idle_add(signal_emit_handler, para);
}
@@ -1082,35 +853,8 @@ static gboolean
object_state_change_handler (gpointer p)
{
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
-
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("object_state_change_handler: env == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("object_state_change_handler: global_ac");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("object_state_change_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- atk_object_notify_state_change(ATK_OBJECT(jaw_impl),
+ atk_object_notify_state_change(ATK_OBJECT(para->jaw_impl),
para->atk_state,
para->state_value);
@@ -1131,7 +875,7 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_objectStateChange(JNIEnv *jniEnv
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
AtkStateType state_type = jaw_util_get_atk_state_type_from_java_state( jniEnv, state );
para->atk_state = state_type;
if (value == JNI_TRUE) {
@@ -1145,39 +889,9 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_objectStateChange(JNIEnv *jniEnv
static gboolean
component_added_handler (gpointer p)
{
- JNIEnv *jniEnv;
-
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
-
- jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("component_added_handler: env == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("component_added_handler: global_ac == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
- JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("component_added_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
-
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
if (atk_object_get_role(atk_obj) == ATK_ROLE_TOOL_TIP)
{
atk_object_notify_state_change(atk_obj,
@@ -1200,44 +914,15 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_componentAdded(JNIEnv *jniEnv,
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
jni_main_idle_add(component_added_handler, para);
}
static gboolean
component_removed_handler (gpointer p)
{
- JNIEnv *jniEnv;
-
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
- jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("component_removed_handler: env == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("component_removed_handler: global_ac == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("component_removed_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
if (atk_obj == NULL)
{
@@ -1264,7 +949,7 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_componentRemoved(JNIEnv *jniEnv,
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
jni_main_idle_add(component_removed_handler, para);
}
@@ -1274,37 +959,8 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_componentRemoved(JNIEnv *jniEnv,
static gboolean
bounds_changed_handler (gpointer p)
{
- JNIEnv *jniEnv;
-
CallbackPara *para = (CallbackPara*)p;
- jobject global_ac = para->global_ac;
- jniEnv = jaw_util_get_jni_env();
- if (jniEnv == NULL)
- {
- if (jaw_debug)
- g_warning("bounds_changed_handler: env == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- if (global_ac == NULL)
- {
- if (jaw_debug)
- g_warning("bounds_changed_handler: global_ac == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
- if (jaw_impl == NULL)
- {
- if (jaw_debug)
- g_warning("bounds_changed_handler: jaw_impl == NULL");
- free_callback_para(para);
- return G_SOURCE_REMOVE;
- }
-
- AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
+ AtkObject* atk_obj = ATK_OBJECT(para->jaw_impl);
if (atk_obj == NULL)
{
@@ -1330,7 +986,7 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_boundsChanged(JNIEnv *jniEnv,
return;
}
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
- CallbackPara *para = alloc_callback_para(global_ac);
+ CallbackPara *para = alloc_callback_para(jniEnv, global_ac);
jni_main_idle_add(bounds_changed_handler, para);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]