diff options
author | waker <wakeroid@gmail.com> | 2009-08-26 14:21:47 +0200 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2009-08-26 14:21:47 +0200 |
commit | 66e87af1c9920b828ae959d69bd1f0b2517a1b2d (patch) | |
tree | fc98103a86fb462622a8bb4a18600f6cedc2a9ca | |
parent | 5adc82974548bb4d1bae7e415356473c96ba9eed (diff) |
added more stuff to plugin api (playback control)
-rw-r--r-- | deadbeef.h | 21 | ||||
-rw-r--r-- | plugins.c | 45 | ||||
-rw-r--r-- | plugins.h | 18 |
3 files changed, 72 insertions, 12 deletions
@@ -86,23 +86,22 @@ struct DB_plugin_s; // player api definition typedef struct { + // versioning + int vmajor; + int vminor; // event subscribing void (*ev_subscribe) (struct DB_plugin_s *plugin, int ev, db_callback_t callback, uintptr_t data); void (*ev_unsubscribe) (struct DB_plugin_s *plugin, int ev, db_callback_t callback, uintptr_t data); // md5sum calc void (*md5) (uint8_t sig[16], const char *in, int len); void (*md5_to_str) (char *str, const uint8_t sig[16]); - - // event sending and handling - int (*messagepump_push)(uint32_t id, uintptr_t ctx, uint32_t p1, uint32_t p2); - int (*messagepump_pop)(uint32_t *id, uintptr_t *ctx, uint32_t *p1, uint32_t *p2); - // playlist access - DB_playItem_t *(*pl_item_alloc) (void); - void (*pl_item_free)(DB_playItem_t *it); - int (*pl_add_dir) (const char *dirname, int (*cb)(DB_playItem_t *it, void *data), void *user_data); - int (*pl_add_file) (const char *fname, int (*cb)(DB_playItem_t *it, void *data), void *user_data); - DB_playItem_t *(*pl_insert_dir) (DB_playItem_t *after, const char *dirname, int *pabort, int (*cb)(DB_playItem_t *it, void *data), void *user_data); - DB_playItem_t *(*pl_insert_file) (DB_playItem_t *after, const char *fname, int *pabort, int (*cb)(DB_playItem_t *it, void *data), void *user_data); + // playback control + void (*playback_next) (void); + void (*playback_prev) (void); + void (*playback_pause) (void); + void (*playback_stop) (void); + void (*playback_play) (void); + void (*quit) (void); } DB_functions_t; // base plugin interface @@ -9,13 +9,24 @@ #endif #include "plugins.h" #include "md5/md5.h" +#include "messagepump.h" +#include "messages.h" // deadbeef api DB_functions_t deadbeef_api = { + // FIXME: set to 1.0 after api freeze + .vmajor = 0, + .vminor = 0, .ev_subscribe = plug_ev_subscribe, .ev_unsubscribe = plug_ev_unsubscribe, .md5 = plug_md5, - .md5_to_str = plug_md5_to_str + .md5_to_str = plug_md5_to_str, + .playback_next = plug_playback_next, + .playback_prev = plug_playback_prev, + .playback_pause = plug_playback_pause, + .playback_stop = plug_playback_stop, + .playback_play = plug_playback_play, + .quit = plug_quit, }; void @@ -73,6 +84,38 @@ plug_ev_unsubscribe (DB_plugin_t *plugin, int ev, db_callback_t callback, uintpt } void +plug_playback_next (void) { + messagepump_push (M_NEXTSONG, 0, 0, 0); +} + +void +plug_playback_prev (void) { + messagepump_push (M_PREVSONG, 0, 0, 0); +} + +void +plug_playback_pause (void) { + messagepump_push (M_PAUSESONG, 0, 0, 0); +} + +void +plug_playback_stop (void) { + messagepump_push (M_STOPSONG, 0, 0, 0); +} + +void +plug_playback_play (void) { + messagepump_push (M_PLAYSONG, 0, 0, 0); +} + +void +plug_quit (void) { + progress_abort (); + messagepump_push (M_TERMINATE, 0, 0, 0); +} + +/////// non-api functions (plugin support) +void plug_trigger_event (int ev) { for (int i = 0; i < MAX_HANDLERS; i++) { if (handlers[ev][i].plugin && !handlers[ev][i].plugin->inactive) { @@ -23,4 +23,22 @@ plug_md5 (uint8_t sig[16], const char *in, int len); void plug_md5_to_str (char *str, const uint8_t sig[16]); +void +plug_playback_next (void); + +void +plug_playback_prev (void); + +void +plug_playback_pause (void); + +void +plug_playback_stop (void); + +void +plug_playback_play (void); + +void +plug_quit (void); + #endif // __PLUGINS_H |