weston: set focus to null [1/1]

PD#SWPL-181047

Problem:
focus leave sysapp when switch source

Solution:
save last focus

Verify:
at301

Change-Id: I688c25134ce788df3ebd0f4254c716ac636dcaf7
Signed-off-by: leng.fang <leng.fang@amlogic.com>
diff --git a/libweston/input.c b/libweston/input.c
index 2ec5aca..958f685 100644
--- a/libweston/input.c
+++ b/libweston/input.c
@@ -1572,6 +1572,7 @@
 	struct wl_display *display = keyboard->seat->compositor->wl_display;
 	uint32_t serial;
 	struct wl_list *focus_resource_list;
+	struct weston_surface* last_keyboard_focus = NULL;
 
 	/* Keyboard focus on a surface without a client is equivalent to NULL
 	 * focus as nothing would react to the keyboard events anyway.
@@ -1585,6 +1586,8 @@
 
 	if (weston_keyboard_need_enter_surface( keyboard, surface ) || surface == NULL)
 	{
+		if (keyboard->focus)
+			last_keyboard_focus = keyboard->focus->compositor->last_keyboard_focus;
 		if (!wl_list_empty(focus_resource_list) && keyboard->focus != surface) {
 			serial = wl_display_next_serial(display);
 			wl_resource_for_each(resource, focus_resource_list) {
@@ -1597,7 +1600,7 @@
 			move_resources(&keyboard->resource_list, focus_resource_list);
 		}
 		if ( surface == NULL && keyboard && keyboard->focus) {
-			surface = keyboard->focus->compositor->last_keyboard_focus;
+			surface = last_keyboard_focus;
 			if (surface == keyboard->focus)
 				surface = NULL;
 			weston_log("\n %s %d, need	back to  surface:%p\n", __FUNCTION__,__LINE__, surface);