Fix crash issue in case of no IME window 18/307418/3
authorJihoon Kim <jihoon48.kim@samsung.com>
Fri, 8 Mar 2024 06:23:40 +0000 (15:23 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Fri, 8 Mar 2024 06:31:41 +0000 (15:31 +0900)
Change-Id: I9b5197acc3a932e8761d76a4b8544e8d6b6af366
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/sclcoreui-efl.cpp

index ffa3920..34215a1 100644 (file)
@@ -843,11 +843,15 @@ static void _render_pre_cb(void *data, Evas *e, void *event_info)
 {
     LOGD("_render_pre_cb() called, now invoking zwp_input_panel_surface_v1_set_ready()");
 
-    zwp_input_panel_surface_v1_set_ready(wlkb.ips, 1);
+    if (wlkb.ips)
+        zwp_input_panel_surface_v1_set_ready(wlkb.ips, 1);
 
     Evas_Object *main_window = NATIVE_WINDOW_CAST(data);
-    evas_event_callback_del_full(evas_object_evas_get(main_window),
-        EVAS_CALLBACK_RENDER_PRE, _render_pre_cb, main_window);
+    if (main_window)
+    {
+        evas_event_callback_del_full(evas_object_evas_get(main_window),
+                EVAS_CALLBACK_RENDER_PRE, _render_pre_cb, main_window);
+    }
 
     delete_render_pre_timer();
 }
@@ -868,13 +872,17 @@ void CSCLCoreUIEFL::process_keyboard_ui_state_change(KEYBOARD_UI_STATE state)
 
 #ifdef WAYLAND
     if (state == KEYBOARD_UI_STATE_WILL_SHOW) {
-        evas_event_callback_add(evas_object_evas_get(NATIVE_WINDOW_CAST(m_main_window)),
-            EVAS_CALLBACK_RENDER_PRE, _render_pre_cb, (void*)m_main_window);
+        if (m_main_window) {
+            evas_event_callback_add(evas_object_evas_get(NATIVE_WINDOW_CAST(m_main_window)),
+                EVAS_CALLBACK_RENDER_PRE, _render_pre_cb, (void*)m_main_window);
+        }
         _render_pre_timer = ecore_timer_add(RENDER_PRE_TIMEOUT, _render_pre_timeout, (void*)m_main_window);
         LOGD("Registered RENDER_PRE callback, _render_pre_cb() and a timer callback");
     } else if (state == KEYBOARD_UI_STATE_DID_SHOW) {
-        LOGD("Forcing keyboard window to render");
-        evas_render(evas_object_evas_get(NATIVE_WINDOW_CAST(m_main_window)));
+        if (m_main_window) {
+            LOGD("Forcing keyboard window to render");
+            evas_render(evas_object_evas_get(NATIVE_WINDOW_CAST(m_main_window)));
+        }
     }
 #endif
 }