Fix show_input_panel_surface crash when no surface has focus
authorNicolas Guyomard <nicolas.guyomard@open.eurogiciel.org>
Thu, 4 Dec 2014 14:43:22 +0000 (15:43 +0100)
committerBoram Park <boram1288.park@samsung.com>
Fri, 6 Nov 2015 05:06:48 +0000 (14:06 +0900)
Change-Id: Ia5105e9c7173a75ec166db170624fa7c9963820a

desktop-shell/input-panel.c

index ffa3ade17a3d24b649700f9c6d46b5848665337e..970747cd06edb4baed98f36d0bce5fc351cbecd6 100644 (file)
@@ -69,10 +69,12 @@ show_input_panel_surface(struct input_panel_surface *ipsurf)
                if (!seat->keyboard || !seat->keyboard->focus)
                        continue;
                focus = weston_surface_get_main_surface(seat->keyboard->focus);
-               ipsurf->output = focus->output;
-               x = ipsurf->output->x + (ipsurf->output->width - ipsurf->surface->width) / 2;
-               y = ipsurf->output->y + ipsurf->output->height - ipsurf->surface->height;
-               weston_view_set_position(ipsurf->view, x, y);
+               if (focus) {
+                       ipsurf->output = focus->output;
+                       x = ipsurf->output->x + (ipsurf->output->width - ipsurf->surface->width) / 2;
+                       y = ipsurf->output->y + ipsurf->output->height - ipsurf->surface->height;
+                       weston_view_set_position(ipsurf->view, x, y);
+               }
        }
 
        weston_layer_entry_insert(&shell->input_panel_layer.view_list,