exposay: Test keyboard presence before using keyboard pointer

We shouldn't actually use the keyboard pointer unless we check that
a keyboard is present.

Reviewed-by: Jonas Ã…dahl <jadahl@gmail.com>
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
diff --git a/desktop-shell/exposay.c b/desktop-shell/exposay.c
index ea2a375..e59d17e 100644
--- a/desktop-shell/exposay.c
+++ b/desktop-shell/exposay.c
@@ -520,11 +520,14 @@
 {
 	struct weston_seat *seat = shell->exposay.seat;
 
-	weston_keyboard_end_grab(seat->keyboard);
 	if (seat->pointer_device_count)
 		weston_pointer_end_grab(seat->pointer);
-	if (seat->keyboard->input_method_resource)
-		seat->keyboard->grab = &seat->keyboard->input_method_grab;
+
+	if (!seat->keyboard_device_count) {
+		weston_keyboard_end_grab(seat->keyboard);
+		if (seat->keyboard->input_method_resource)
+			seat->keyboard->grab = &seat->keyboard->input_method_grab;
+	}
 
 	return EXPOSAY_LAYOUT_INACTIVE;
 }