Compare commits

...

1 Commits

Author SHA1 Message Date
Tom 'TAsn' Hacohen 10a69c85b3 Add module interface for elm-clouseau integration. 2013-08-30 16:33:29 +01:00
2 changed files with 68 additions and 5 deletions

View File

@ -13,6 +13,65 @@
static Eina_Bool _elm_is_init = EINA_FALSE;
static const char *_my_app_name = NULL;
static int _connect_to_daemon(void);
/**************************************************************************/
/* This is an attempt to somehow replicate what's available in new versions
* of clouseau. I.e the module interface. */
static int _clouseau_init_count = 0;
static char *_module_my_app_name = NULL;
EAPI Eina_Bool
clouseau_app_connect(const char *appname)
{
_my_app_name = _module_my_app_name = strdup(appname);
if(!_connect_to_daemon())
{
printf("Failed to connect to server.\n");
return EINA_FALSE;
}
return EINA_TRUE;
}
EAPI int
clouseau_init(void)
{
if (++_clouseau_init_count == 1)
{
eina_init();
ecore_init();
ecore_con_init();
clouseau_data_init();
}
return _clouseau_init_count;
}
EAPI int
clouseau_shutdown(void)
{
if (--_clouseau_init_count == 0)
{
clouseau_data_shutdown();
ecore_con_shutdown();
ecore_shutdown();
eina_shutdown();
free(_module_my_app_name);
_my_app_name = _module_my_app_name = NULL;
}
else if (_clouseau_init_count < 0)
{
_clouseau_init_count = 0;
printf("Tried to shutdown although not initiated.\n");
}
return _clouseau_init_count;
}
/***************************** END OF EINA MODULE *************************/
static void
libclouseau_item_add(Evas_Object *o, Clouseau_Tree_Item *parent)
{
@ -302,6 +361,8 @@ elm_init(int argc, char **argv)
{
int (*_elm_init)(int, char **) = dlsym(RTLD_NEXT, __func__);
setenv("ELM_CLOUSEAU", "0", 1);
if (!_elm_is_init)
{
_my_app_name = argv[0];
@ -324,17 +385,17 @@ ecore_main_loop_begin(void)
_my_app_name = "clouseau";
}
if(!_connect_to_daemon())
clouseau_init();
if (!clouseau_app_connect(_my_app_name))
{
printf("Failed to connect to server.\n");
return;
}
clouseau_data_init();
_ecore_main_loop_begin();
clouseau_data_shutdown();
clouseau_shutdown();
return;
}
@ -383,3 +444,4 @@ evas_object_free(Evas_Object *obj, int clean_layer)
_evas_object_free(obj, clean_layer);
}

View File

@ -7,7 +7,8 @@ then
else
# Start clouseau daemon (will start single instance), then run app
clouseaud
LD_PRELOAD="$1/libclouseau.so" "\$@"
#Set the ELM_CLOUSEAU in case preload is disabled.
ELM_CLOUSEAU=1 LD_PRELOAD="$1/libclouseau.so" "\$@"
fi
ENDOFMESSAGE