Fix issue to print invalid object error message when pressing H/W key 09/296409/5
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 27 Jul 2023 05:55:48 +0000 (14:55 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Thu, 27 Jul 2023 05:59:26 +0000 (14:59 +0900)
eo.c:1972 Object 0x80006183 is not a valid object in this context:
object domain: 0, current domain: 2, local domain: 2, available domains: [  1 2  ].
Are you trying to access this object from another thread?

>>> bt
0  efl_isa (eo_id=0x80006183, klass_id=0x4000003a) at ../src/lib/eo/eo.c:1972
1  0xb6c5937a in evas_object_data_get () from /lib/libevas.so.1
2  0xae60f61a in _e_input_panel_is_effect_running (ec=<optimized out>) at e_mod_input_panel.c:182
3  0xae6118f4 in e_input_panel_is_effect_running () at e_mod_input_panel.c:1582
4  0xae60dbba in _input_panel_hide (client=0x20d87c8, resource=<optimized out>, force_hide=force_hide@entry=0 '\000') at e_mod_main.c:294
5  0xae60ea72 in _e_mod_ecore_key_down_cb (data=<optimized out>, type=<optimized out>, event=<optimized out>) at e_mod_main.c:1129

Change-Id: Id96d0690f05d54498bfa026c83c492231a13b294
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/e_mod_input_panel.c
src/e_mod_main.c

index 59a65d9..0ec5ba6 100644 (file)
@@ -1171,6 +1171,8 @@ e_input_panel_visibility_change(Eina_Bool visible)
 
    LOGI("e_input_panel_visibility_change : %d", visible);
 
+   ecore_thread_main_loop_begin();
+
    vconf_set_int (VCONFKEY_ISF_INPUT_PANEL_STATE, visible ? VCONFKEY_ISF_INPUT_PANEL_STATE_SHOW : VCONFKEY_ISF_INPUT_PANEL_STATE_HIDE);
 
    EINA_LIST_FOREACH(g_input_panel->surfaces, l, ips)
@@ -1180,6 +1182,8 @@ e_input_panel_visibility_change(Eina_Bool visible)
         _e_input_panel_surface_visible_update(ips);
      }
 
+   ecore_thread_main_loop_end();
+
    _wait_update_timer_del();
 }
 
index db4203c..929244d 100644 (file)
@@ -291,7 +291,9 @@ _input_panel_hide(struct wl_client *client, struct wl_resource *resource, Eina_B
         _cancel_will_hide_timer();
 
         zone = e_zone_current_get();
+        ecore_thread_main_loop_begin();
         effect_run = e_input_panel_is_effect_running();
+        ecore_thread_main_loop_end();
         if (zone && (zone->display_state == E_ZONE_DISPLAY_STATE_OFF))
           timeout = 0.0f;
         else if (effect_run)