From 4107e7644dddcc6dea819da1ae0979a03e428772 Mon Sep 17 00:00:00 2001 From: Youngbok Shin Date: Fri, 26 Oct 2018 19:30:28 +0900 Subject: [PATCH] evas filter: remove critical messages from Evas Filter Summary: When you run filter examples with enabling GL engine support, you can see critical messages which say don't use efl_unref for buffer object. So, efl_unref has to be replaced with efl_del. @fix Test Plan: Run filter example with GL Reviewers: cedric, Hermet, raster, woohyun Reviewed By: Hermet Subscribers: segfaultxavi, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D7119 --- src/lib/evas/filters/evas_filter.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/lib/evas/filters/evas_filter.c b/src/lib/evas/filters/evas_filter.c index fcbad016f2..055c72d555 100644 --- a/src/lib/evas/filters/evas_filter.c +++ b/src/lib/evas/filters/evas_filter.c @@ -41,6 +41,17 @@ static void _filter_buffer_unlock_all(Evas_Filter_Context *ctx); #define _free(ptr) free(ptr) //eina_freeq_ptr_main_add(ptr, NULL, sizeof(*ptr)) +static void +_buffer_del(Eo *buffer) +{ + if (!buffer) return; + + if (efl_parent_get(buffer)) + efl_del(buffer); + else + efl_unref(buffer); +} + Evas_Filter_Context * evas_filter_context_new(Evas_Public_Data *evas, Eina_Bool async, void *user_data) { @@ -116,7 +127,7 @@ static void _filter_buffer_backing_free(Evas_Filter_Buffer *fb) { if (!fb || !fb->buffer) return; - efl_unref(fb->buffer); + _buffer_del((Eo *)fb->buffer); fb->buffer = NULL; } @@ -600,7 +611,7 @@ evas_filter_buffer_backing_set(Evas_Filter_Context *ctx, int bufid, ret = EINA_TRUE; end: - if (fb->buffer != buffer) efl_unref(fb->buffer); + if (fb->buffer != buffer) _buffer_del((Eo *)fb->buffer); fb->buffer = buffer; return ret; }