Although a wl_buffer resource is destroyed, a tbm_surface associated
with the wl_buffer still has to stay alive because we increases
reference count of tbm_surface with tbm_surface_internal_ref().
Since we don't need to drop the reference count of tbm_surface even when
wl_buffer resource is destroyed, so it's reasonable that we keep the
tbm_surface until ds_buffer is destroyed.
Change-Id: I58cd008f965b1cf84671eba3bfa774274d0df957
buffer = wl_container_of(listener, buffer, resource_destroy);
buffer->resource = NULL;
-
- tbm_surface_internal_unref(buffer->surface);
- buffer->surface = NULL;
-
wl_list_remove(&buffer->resource_destroy.link);
wl_list_init(&buffer->resource_destroy.link);
ds_dbg("Destroy TBM client buffer(%p)", buffer);
+ tbm_surface_internal_unref(buffer->surface);
wl_list_remove(&buffer->resource_destroy.link);
wl_list_remove(&buffer->buffer_release.link);
free(buffer);