fix moveresize shutdown crash

This commit is contained in:
Mike Blumenkrantz 2013-10-15 09:19:03 +01:00
parent 686c3444fd
commit 5335c92ab3
1 changed files with 13 additions and 20 deletions

View File

@ -1,11 +1,13 @@
#include "e_mod_main.h"
static Eina_Inarray *ec_hooks = NULL;
#define EC_HOOK_COUNT 6
static Evas_Object *mr_obj_x = NULL;
static Evas_Object *mr_obj_y = NULL;
static Evas_Object *fade_obj = NULL;
static E_Client_Hook *ec_hooks[EC_HOOK_COUNT] = {NULL};
static void
fade_end(void *d EINA_UNUSED, Efx_Map_Data *emd EINA_UNUSED, Evas_Object *obj EINA_UNUSED)
{
@ -90,31 +92,22 @@ resize_end(void *d EINA_UNUSED, E_Client *ec)
EINTERN void
mr_init(void)
{
E_Client_Hook *ech;
unsigned int x = 0;
ec_hooks = eina_inarray_new(sizeof(E_Client_Hook*), 6);
ec_hooks[x++] = e_client_hook_add(E_CLIENT_HOOK_MOVE_BEGIN, move_begin, NULL);
ec_hooks[x++] = e_client_hook_add(E_CLIENT_HOOK_MOVE_UPDATE, move_update, NULL);
ec_hooks[x++] = e_client_hook_add(E_CLIENT_HOOK_MOVE_END, move_end, NULL);
ech = e_client_hook_add(E_CLIENT_HOOK_MOVE_BEGIN, move_begin, NULL);
eina_inarray_push(ec_hooks, &ech);
ech = e_client_hook_add(E_CLIENT_HOOK_MOVE_UPDATE, move_update, NULL);
eina_inarray_push(ec_hooks, &ech);
ech = e_client_hook_add(E_CLIENT_HOOK_MOVE_END, move_end, NULL);
eina_inarray_push(ec_hooks, &ech);
ech = e_client_hook_add(E_CLIENT_HOOK_RESIZE_BEGIN, resize_begin, NULL);
eina_inarray_push(ec_hooks, &ech);
ech = e_client_hook_add(E_CLIENT_HOOK_RESIZE_UPDATE, resize_update, NULL);
eina_inarray_push(ec_hooks, &ech);
ech = e_client_hook_add(E_CLIENT_HOOK_RESIZE_END, resize_end, NULL);
eina_inarray_push(ec_hooks, &ech);
ec_hooks[x++] = e_client_hook_add(E_CLIENT_HOOK_RESIZE_BEGIN, resize_begin, NULL);
ec_hooks[x++] = e_client_hook_add(E_CLIENT_HOOK_RESIZE_UPDATE, resize_update, NULL);
ec_hooks[x++] = e_client_hook_add(E_CLIENT_HOOK_RESIZE_END, resize_end, NULL);
}
EINTERN void
mr_shutdown(void)
{
E_Client_Hook *ech;
unsigned int x = 0;
EINA_INARRAY_FOREACH(ec_hooks, ech)
e_client_hook_del(ech);
E_FREE_FUNC(ec_hooks, eina_inarray_free);
for (; x < EC_HOOK_COUNT; x++)
E_FREE_FUNC(ec_hooks[x], e_client_hook_del);
}