e_pixmap: clear the resource of pixmap, and check if null before accessing. accepted/tizen/common/20160318.145544 accepted/tizen/ivi/20160318.113317 accepted/tizen/mobile/20160318.113007 accepted/tizen/tv/20160318.113135 accepted/tizen/wearable/20160318.113150 submit/tizen/20160317.075557
authorSeunghun Lee <shiin.lee@samsung.com>
Tue, 8 Mar 2016 12:12:29 +0000 (21:12 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Thu, 17 Mar 2016 08:09:19 +0000 (17:09 +0900)
Change-Id: I3a3ed3b109ce60505effdd0a73116c6a2c4c36dd

src/bin/e_comp_wl.c
src/bin/e_pixmap.c

index f4d7f40b7e0f6fae4707371e912dd5953d8fe152..7f18d23552501f180c0a2d1a8cb63ef2cf8ceaef 100644 (file)
@@ -1825,6 +1825,9 @@ _e_comp_wl_buffer_cb_destroy(struct wl_listener *listener, void *data EINA_UNUSE
              ec->frame = NULL;
           }
         e_object_unref(E_OBJECT(ec));
+
+        if (e_pixmap_resource_get(ec->pixmap) == buffer)
+          e_pixmap_resource_set(ec->pixmap, NULL);
      }
 
    wl_signal_emit(&buffer->destroy_signal, buffer);
index 6690d21c1a0a3d7919dd290b83ae0201e82b2a5b..ea9ad4b58a5c395269117e28e06d71e41e6678d9 100644 (file)
@@ -850,6 +850,8 @@ e_pixmap_image_refresh(E_Pixmap *cp)
            E_Comp_Wl_Buffer *buffer = cp->buffer;
            struct wl_shm_buffer *shm_buffer;
 
+           if (!buffer) return EINA_FALSE;
+
            shm_buffer = buffer->shm_buffer;
            if (cp->buffer_ref.buffer && (cp->buffer_ref.buffer != buffer))
              {
@@ -867,8 +869,6 @@ e_pixmap_image_refresh(E_Pixmap *cp)
            cp->w = cp->h = 0;
            cp->image_argb = EINA_FALSE;
 
-           if (!buffer) return EINA_FALSE;
-
            if (buffer->type == E_COMP_WL_BUFFER_TYPE_SHM)
              {
                 shm_buffer = wl_shm_buffer_get(buffer->resource);