When client is deleted, _e_client_del is called. And ec->pixmap becomes NULL.
After that, when _e_mod_effect_unref is called, ec->pixmap is NULL. But the
ref_count of pixmap is 1.
Change-Id: I6e33af1abd30bf5556bce8d300a3697e926ecf62
{
E_Client *ec;
unsigned int animating;
+ E_Pixmap *ep;
} E_Effect_Client;
static void
efc->animating ++;
e_object_ref(E_OBJECT(ec));
- e_pixmap_ref(ec->pixmap);
+ efc->ep = e_pixmap_ref(ec->pixmap);
}
static void
while(efc->animating)
{
- e_pixmap_free(ec->pixmap);
+ e_pixmap_free(efc->ep);
if (!e_object_unref(E_OBJECT(ec)))
{
eina_hash_del_by_key(_effect->clients, &ec);
efc->animating --;
}
+
+ efc->ep = NULL;
}
static void
efc = E_NEW(E_Effect_Client, 1);
efc->ec = ec;
efc->animating = 0;
+ efc->ep = NULL;
return efc;
}