e_comp_wl: fix seg.fault when video stops 72/73772/5
authorBoram Park <boram1288.park@samsung.com>
Thu, 9 Jun 2016 02:43:44 +0000 (11:43 +0900)
committerBoram Park <boram1288.park@samsung.com>
Mon, 13 Jun 2016 08:31:23 +0000 (17:31 +0900)
Change-Id: I4490cbcbc0c580a8e2905fa50321acdd0b9baa68

src/bin/e_comp_wl.c

index 8b293f4913730b8a0a1c97ab7435fca2d26ad5bb..2a6d383007b8d11094f172cf45ba292996dc0e0c 100644 (file)
@@ -2190,6 +2190,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
    Eina_Bool placed = EINA_TRUE;
    int x = 0, y = 0;
    E_Comp_Wl_Buffer *buffer;
+   E_Comp_Wl_Subsurf_Data *sdata;
 
    first = !e_pixmap_usable_get(ec->pixmap);
 
@@ -2233,6 +2234,8 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
                }
           }
      }
+
+   sdata = ec->comp_data->sub.data;
    if (!e_pixmap_usable_get(ec->pixmap))
      {
         if (ec->comp_data->mapped)
@@ -2240,7 +2243,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
              if ((ec->comp_data->shell.surface) && (ec->comp_data->shell.unmap))
                ec->comp_data->shell.unmap(ec->comp_data->shell.surface);
              else if (e_client_has_xwindow(ec) || ec->internal ||
-                      (ec->comp_data->sub.data && ec->comp_data->sub.data->parent->comp_data->mapped) ||
+                      (sdata && sdata->parent && sdata->parent->comp_data && sdata->parent->comp_data->mapped) ||
                       (ec == e_comp_wl->drag_client))
                {
                   ec->visible = EINA_FALSE;
@@ -2259,7 +2262,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
              if ((ec->comp_data->shell.surface) && (ec->comp_data->shell.map))
                ec->comp_data->shell.map(ec->comp_data->shell.surface);
              else if (e_client_has_xwindow(ec) || ec->internal ||
-                      (ec->comp_data->sub.data && ec->comp_data->sub.data->parent->comp_data->mapped) ||
+                      (sdata && sdata->parent && sdata->parent->comp_data && sdata->parent->comp_data->mapped) ||
                       (ec == e_comp_wl->drag_client))
                {
                   ec->visible = EINA_TRUE;
@@ -4687,6 +4690,7 @@ e_comp_wl_surface_attach(E_Client *ec, E_Comp_Wl_Buffer *buffer)
 E_API Eina_Bool
 e_comp_wl_surface_commit(E_Client *ec)
 {
+   E_Comp_Wl_Subsurf_Data *sdata;
    Eina_Bool ignored;
 
    _e_comp_wl_surface_state_commit(ec, &ec->comp_data->pending);
@@ -4702,6 +4706,7 @@ e_comp_wl_surface_commit(E_Client *ec)
         _e_comp_wl_subsurface_restack_bg_rectangle(topmost);
      }
 
+   sdata = ec->comp_data->sub.data;
    if (!e_pixmap_usable_get(ec->pixmap))
      {
         if (ec->comp_data->mapped)
@@ -4709,7 +4714,7 @@ e_comp_wl_surface_commit(E_Client *ec)
              if ((ec->comp_data->shell.surface) && (ec->comp_data->shell.unmap))
                ec->comp_data->shell.unmap(ec->comp_data->shell.surface);
              else if (e_client_has_xwindow(ec) || ec->internal ||
-                      (ec->comp_data->sub.data && ec->comp_data->sub.data->parent->comp_data->mapped) ||
+                      (sdata && sdata->parent && sdata->parent->comp_data && sdata->parent->comp_data->mapped) ||
                       (ec == e_comp_wl->drag_client))
                {
                   ec->visible = EINA_FALSE;
@@ -4728,7 +4733,7 @@ e_comp_wl_surface_commit(E_Client *ec)
              if ((ec->comp_data->shell.surface) && (ec->comp_data->shell.map))
                ec->comp_data->shell.map(ec->comp_data->shell.surface);
              else if (e_client_has_xwindow(ec) || ec->internal ||
-                      (ec->comp_data->sub.data && ec->comp_data->sub.data->parent->comp_data->mapped) ||
+                      (sdata && sdata->parent && sdata->parent->comp_data && sdata->parent->comp_data->mapped) ||
                       (ec == e_comp_wl->drag_client))
                {
                   ec->visible = EINA_TRUE;