Reduce duplicate code to create input method context 25/276825/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Mon, 27 Jun 2022 04:25:40 +0000 (13:25 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Mon, 27 Jun 2022 04:25:40 +0000 (13:25 +0900)
Change-Id: I6215a02c8b2637e7361663f826c6dc0bfbdbe736
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/e_mod_main.c

index 724602d..5c6f128 100644 (file)
@@ -1121,6 +1121,32 @@ _e_text_input_deactivate(E_Text_Input *text_input, E_Input_Method *input_method,
      }
 }
 
+static E_Input_Method_Context *create_input_method_context(struct wl_client *client, E_Input_Method *input_method)
+{
+   E_Input_Method_Context *context = NULL;
+
+   if (!(context = E_NEW(E_Input_Method_Context, 1)))
+     {
+        wl_client_post_no_memory(client);
+        ERR("Could not allocate space for Input_Method_Context");
+        return NULL;
+     }
+
+   context->resource =
+      wl_resource_create(wl_resource_get_client(input_method->resource),
+                         &zwp_input_method_context_v1_interface, 1, 0);
+
+   if (context->resource)
+     wl_resource_set_implementation(context->resource,
+                                    &_e_text_input_method_context_implementation,
+                                    context, _e_text_input_method_context_cb_resource_destroy);
+
+   context->input_method = input_method;
+   input_method->context = context;
+
+   return context;
+}
+
 static void
 _e_text_input_cb_activate(struct wl_client *client, struct wl_resource *resource, struct wl_resource *seat, struct wl_resource *surface)
 {
@@ -1165,30 +1191,15 @@ _e_text_input_cb_activate(struct wl_client *client, struct wl_resource *resource
 
    if (input_method->resource)
      {
-        if (!(context = E_NEW(E_Input_Method_Context, 1)))
-          {
-             wl_client_post_no_memory(client);
-             ERR("Could not allocate space for Input_Method_Context");
-             return;
-          }
-
         if (!ecore_key_down_handler)
           ecore_key_down_handler = ecore_event_handler_prepend(ECORE_EVENT_KEY_DOWN,
                                                            _e_mod_ecore_key_down_cb,
                                                            NULL);
 
-        context->resource =
-           wl_resource_create(wl_resource_get_client(input_method->resource),
-                              &zwp_input_method_context_v1_interface, 1, 0);
-
-        if (context->resource)
-          wl_resource_set_implementation(context->resource,
-                                         &_e_text_input_method_context_implementation,
-                                         context, _e_text_input_method_context_cb_resource_destroy);
+        context = create_input_method_context(client, input_method);
+        EINA_SAFETY_ON_NULL_GOTO(context, err);
 
         context->input = text_input;
-        context->input_method = input_method;
-        input_method->context = context;
 
         if (context->resource)
           {
@@ -1269,25 +1280,10 @@ _e_text_input_method_create_context(struct wl_client *client, E_Input_Method *in
    input_method->input = text_input;
    text_input->input_methods = eina_list_append(text_input->input_methods, input_method);
 
-   if (!(context = E_NEW(E_Input_Method_Context, 1)))
-     {
-        wl_client_post_no_memory(client);
-        ERR("Could not allocate space for Input_Method_Context");
-        return EINA_FALSE;
-     }
-
-   context->resource =
-      wl_resource_create(wl_resource_get_client(input_method->resource),
-                         &zwp_input_method_context_v1_interface, 1, 0);
-
-   if (context->resource)
-     wl_resource_set_implementation(context->resource,
-                                    &_e_text_input_method_context_implementation,
-                                    context, _e_text_input_method_context_cb_resource_destroy);
+   context = create_input_method_context(client, input_method);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(context, EINA_FALSE);
 
    context->input = text_input;
-   context->input_method = input_method;
-   input_method->context = context;
 
    if (need_focus_in)
      zwp_input_method_v1_send_activate(input_method->resource, context->resource);