From 66e87af1c9920b828ae959d69bd1f0b2517a1b2d Mon Sep 17 00:00:00 2001 From: waker Date: Wed, 26 Aug 2009 14:21:47 +0200 Subject: added more stuff to plugin api (playback control) --- deadbeef.h | 21 ++++++++++----------- plugins.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- plugins.h | 18 ++++++++++++++++++ 3 files changed, 72 insertions(+), 12 deletions(-) diff --git a/deadbeef.h b/deadbeef.h index 8681e10a..422a971c 100644 --- a/deadbeef.h +++ b/deadbeef.h @@ -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 diff --git a/plugins.c b/plugins.c index 43fb875f..3333acd4 100644 --- a/plugins.c +++ b/plugins.c @@ -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 @@ -72,6 +83,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++) { diff --git a/plugins.h b/plugins.h index 4cc1a409..ef228b51 100644 --- a/plugins.h +++ b/plugins.h @@ -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 -- cgit v1.2.3