rendered paste body#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "Emusic.h"
#include "emusic_private.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
Emusic* emusic = NULL;
EAPI int
emusic_init(const char* module_filename)
{
Ecore_Plugin *plugin;
if ( ! ecore_init() )
{
printf("[Emusic] [Core] Can't init ecore.\n");
return 0;
}
emusic = (Emusic*)calloc(1, sizeof(Emusic));
if (!emusic)
{
printf("[Emusic] [Core] Canot allocate Memory for emusic !\n");
return 0;
}
emusic->group_id = ecore_path_group_new ("emusic_module");
ecore_path_group_add (emusic->group_id, PACKAGE_LIB_DIR"/emusic/");
printf("%s/emusic/%s\n", PACKAGE_LIB_DIR, module_filename);
plugin = ecore_plugin_load(emusic->group_id, module_filename);
printf("module : %p\n", plugin);
if (plugin)
{
unsigned char (*func_module_open)( Emusic_Module** module, void** priv);
func_module_open = ecore_plugin_call(plugin, "module_open");
if (func_module_open)
{
if (func_module_open(&emusic->module, &emusic->priv))
{
emusic->plugin = plugin;
return 1;
}
}
ecore_plugin_unload(plugin);
}
else
{
printf ("[Emusic] [Core] No module. Error: %s\n", dlerror());
}
return 0;
}
EAPI int
emusic_shutdown(void)
{
Ecore_Plugin *plugin;
void (*module_close) (Emusic_Module *module);
plugin = emusic->plugin;
module_close = ecore_plugin_call(emusic->plugin, "module_close");
if (module_close)
module_close(emusic->module);
ecore_plugin_unload(plugin);
ecore_path_group_del (emusic->group_id);
free(emusic);
return 1;
}
EAPI Emusic_Controller*
emusic_controller_new(char* name)
{
Emusic_Controller* controller;
if (!emusic)
{
/* Print error : initialize emusic first !*/
printf("[Emusic] [Core] Initialize emusic first !\n");
return NULL;
}
controller = emusic->module->controller_new(emusic->priv, name);
/*if (!controller)
return NULL;
for (i = 0; i < EMUSIC_SIGNAL_NBR; i++)*/
controller->signals[0] = ecore_event_type_new();
controller->signals[1] = ecore_event_type_new();
controller->signals[2] = ecore_event_type_new();
printf("[Emusic] [Core] %d %d %d\n",controller->signals[0], controller->signals[1], controller->signals[2]);
return controller;
/* return emusic->module->controller_new(emusic->priv, name);*/
}
EAPI int
emusic_controller_name_set(Emusic_Controller* controller, char* name)
{
if (!emusic || !controller || !name)
return 0;
return emusic->module->controller_name_set(emusic->priv, controller, name);
}
EAPI char*
emusic_controller_name_get(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_name_get(emusic->priv, controller);
}
EAPI int
emusic_controller_remove(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_remove(emusic->priv, controller);
}
EAPI int
emusic_controller_mode_set(Emusic_Controller* controller, Emusic_Controller_Mode mode)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_mode_set(emusic->priv, controller, mode);
}
EAPI Emusic_Controller_Mode
emusic_controller_mode_get(Emusic_Controller* controller)
{
if (!emusic || !controller)
return EMUSIC_CONTROLLER_MODE_NULL;
return emusic->module->controller_mode_get(emusic->priv, controller);
}
EAPI int
emusic_controller_playlist_new(Emusic_Controller* controller, char *playlist_name)
{
if (!emusic || !controller || !playlist_name)
return 0;
return emusic->module->controller_playlist_new(emusic->priv, controller, playlist_name);
}
EAPI int
emusic_controller_playlist_add(Emusic_Controller* controller, char* filename)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_playlist_add(emusic->priv, controller, filename);
}
EAPI int
emusic_controller_playlist_remove(Emusic_Controller* controller, char* filename)
{
if (!emusic || !controller || !filename)
return 0;
return emusic->module->controller_playlist_remove(emusic->priv, controller, filename);
}
EAPI int
emusic_controller_playlist_remove_id(Emusic_Controller* controller, int id)
{
if (!emusic || !controller || id < 0)
return 0;
return emusic->module->controller_playlist_remove_id(emusic->priv, controller, id);
}
EAPI int
emusic_controller_playlist_goto(Emusic_Controller* controller, char* filename)
{
if (!emusic || !controller || !filename)
return 0;
return emusic->module->controller_playlist_goto(emusic->priv, controller, filename);
}
EAPI int
emusic_controller_playlist_goto_id(Emusic_Controller* controller, int id)
{
if (!emusic || !controller || id < 0)
return 0;
return emusic->module->controller_playlist_goto_id(emusic->priv, controller, id);
}
EAPI int
emusic_controller_playlist_destroy(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_playlist_destroy(emusic->priv, controller);
}
EAPI char*
emusic_controller_playlist_load(Emusic_Controller* controller, char* filename)
{
if (!emusic || !controller || !filename)
return NULL;
return emusic->module->controller_playlist_load(emusic->priv, controller, filename);
}
EAPI char*
emusic_controller_playlist_save(Emusic_Controller* controller, char* filename)
{
if (!emusic || !controller || !filename)
return NULL;
return emusic->module->controller_playlist_save(emusic->priv, controller, filename);
}
EAPI Emusic_Playlist *
emusic_controller_playlist_get(Emusic_Controller* controller, char *playlist_name)
{
if (!emusic || !controller || !playlist_name)
return NULL;
return emusic->module->controller_playlist_get(emusic->priv, controller, playlist_name);
}
EAPI int
emusic_controller_play(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_play(emusic->priv, controller);
}
EAPI int
emusic_controller_pause(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_pause(emusic->priv, controller);
}
EAPI int
emusic_controller_stop(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_stop(emusic->priv, controller);
}
EAPI int
emusic_controller_next(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_next(emusic->priv, controller);
}
EAPI int
emusic_controller_prev(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_prev(emusic->priv, controller);
}
EAPI double
emusic_controller_volume_get(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_volume_get(emusic->priv, controller);
}
EAPI int
emusic_controller_volume_set(Emusic_Controller* controller, double volume)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_volume_set(emusic->priv, controller, volume);
}
EAPI int
emusic_controller_mute_get(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_mute_get(emusic->priv, controller);
}
EAPI int
emusic_controller_mute_set(Emusic_Controller* controller, int mute)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_mute_set(emusic->priv, controller, mute);
}
EAPI double
emusic_controller_length_get(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_length_get(emusic->priv, controller);
}
EAPI double
emusic_controller_position_get(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_position_get(emusic->priv, controller);
}
EAPI int
emusic_controller_position_set(Emusic_Controller* controller, double position)
{
if (!emusic || !controller)
return 0;
return emusic->module->controller_position_set(emusic->priv, controller, position);
}
EAPI int
emusic_controller_repea_set(Emusic_Controller* controller, int repeat)
{
if (!emusic || !controller)
return 0;
return repeat;
}
EAPI int
emusic_controller_repeat_get(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return 1;
}
EAPI int
emusic_controller_shuffle_set(Emusic_Controller* controller, int shuffle)
{
if (!emusic || !controller)
return 0;
return shuffle;
}
EAPI int
emusic_controller_shuffle_get(Emusic_Controller* controller)
{
if (!emusic || !controller)
return 0;
return 1;
}
EAPI int
emusic_controller_callback_add(Emusic_Controller* controller, char* signal_name,
int (*signal_cb) (void* data, int type, void* event), void* data)
{
if (!emusic || !controller)
return 0;
if (!strcmp(signal_name, "eos"))
{
ecore_event_handler_add(controller->signals[EMUSIC_SIGNAL_EOS], signal_cb, data);
}
else if (!strcmp (signal_name, "eopl"))
ecore_event_handler_add(controller->signals[EMUSIC_SIGNAL_EOPL], signal_cb, data);
else if (!strcmp (signal_name, "new_tags"))
ecore_event_handler_add(controller->signals[EMUSIC_SIGNAL_NEW_TAGS], signal_cb, data);
else
{
printf("[Emusic] [Core] *** ERROR *** Signal doesn't exists !\n");
return 0;
}
return 1;
}