keyrouter: check NULL view 59/207159/1
authorlsj119 <lsj119@samsung.com>
Wed, 24 Apr 2019 06:36:01 +0000 (15:36 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Thu, 30 May 2019 08:33:25 +0000 (17:33 +0900)
Change-Id: Ib7e1b4f8a8ad74752a4f40a22d15b055e5d2eeeb

src/bin/headless/input.c
src/lib/keyrouter/pepper-keyrouter.c

index 75698673e7cd90ac3b054fe71738e5534ff70e83..d265ba9a6a75785c848a54d5db14624171423881 100644 (file)
@@ -146,8 +146,11 @@ headless_input_set_focus_view(pepper_compositor_t *compositor, pepper_view_t *fo
        {
                if (hi->focus_view)
                        pepper_keyboard_send_leave(hi->keyboard, hi->focus_view);
-               pepper_keyboard_set_focus(hi->keyboard, focus_view);
-               pepper_keyboard_send_enter(hi->keyboard, focus_view);
+
+               if (focus_view) {
+                       pepper_keyboard_set_focus(hi->keyboard, focus_view);
+                       pepper_keyboard_send_enter(hi->keyboard, focus_view);
+               }
                hi->focus_view = focus_view;
        }
 
@@ -163,6 +166,8 @@ headless_input_set_top_view(void *compositor, pepper_view_t *top_view)
        hi = (headless_input_t *)pepper_object_get_user_data((pepper_object_t *) compositor, &KEY_INPUT);
        PEPPER_CHECK(hi, return, "Invalid headless input.\n");
 
+       if (hi->top_view == top_view) return;
+
        hi->top_view = top_view;
 
        if (hi->keyrouter)
index 53c2669853db2d0cabccab69de912b3a13c8a33c..1333ef8f38e01eaab9604069d41adafb759610cd 100644 (file)
@@ -230,20 +230,30 @@ pepper_keyrouter_set_keyboard(pepper_keyrouter_t * pepper_keyrouter, pepper_keyb
 PEPPER_API void
 pepper_keyrouter_set_focus_view(pepper_keyrouter_t *pk, pepper_view_t *focus_view)
 {
+       struct wl_client *client = NULL;
        PEPPER_CHECK(pk, return, "pepper keyrouter is invalid.\n");
        PEPPER_CHECK(pk->keyboard, return, "No keyboard is available for pepper keyrouter.\n");
 
        pk->focus_view = focus_view;
-       keyrouter_set_focus_client(pk->keyrouter, _pepper_keyrouter_get_client_from_view(focus_view));
+
+       if (focus_view)
+               client = _pepper_keyrouter_get_client_from_view(focus_view);
+
+       keyrouter_set_focus_client(pk->keyrouter, client);
 }
 
 PEPPER_API void
 pepper_keyrouter_set_top_view(pepper_keyrouter_t *pk, pepper_view_t *top_view)
 {
+       struct wl_client *client = NULL;
        PEPPER_CHECK(pk, return, "pepper keyrouter is invalid.\n");
 
        pk->top_view = top_view;
-       keyrouter_set_top_client(pk->keyrouter, _pepper_keyrouter_get_client_from_view(top_view));
+
+       if (top_view)
+               client = _pepper_keyrouter_get_client_from_view(top_view);
+
+       keyrouter_set_top_client(pk->keyrouter, client);
 }
 
 static void