All pastes #341578 Raw Edit

captainigloo

public text v1 · immutable
·published 2007-02-05 19:03 UTC
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;

}