weston-ivi-shell: Bug fix. surface info in ivi-controller is remained
authorNobuhiko Tanibata <NOBUHIKO_TANIBATA@denso.co.jp>
Thu, 26 Dec 2013 04:55:30 +0000 (13:55 +0900)
committerNobuhiko Tanibata <NOBUHIKO_TANIBATA@denso.co.jp>
Wed, 8 Jan 2014 07:32:36 +0000 (16:32 +0900)
even if ivisurface is removed by weston-layout.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@denso.co.jp>
weston-ivi-shell/src/ivi-controller.c

index 5b74cbe..26dfa0a 100755 (executable)
@@ -1398,8 +1398,21 @@ surface_event_remove(struct weston_layout_surface *layout_surface,
 {
     struct ivishell *shell = userdata;
     struct ivicontroller_surface *ctrlsurf = NULL;
+    struct ivisurface *ivisurf = NULL;
+    struct ivisurface *next = NULL;
     uint32_t id_surface = 0;
 
+    wl_list_for_each_safe(ivisurf, next, &shell->list_surface, link) {
+        if (layout_surface != ivisurf->layout_surface) {
+            continue;
+        }
+
+        wl_list_remove(&ivisurf->link);
+        free(ivisurf);
+        ivisurf = NULL;
+        break;
+    }
+
     id_surface = weston_layout_getIdOfSurface(layout_surface);
 
     wl_list_for_each(ctrlsurf, &shell->list_controller_surface, link) {