changeset 3753:22d71f986b86

export AudDRCT API.
author William Pitcock <nenolod@atheme.org>
date Sun, 14 Oct 2007 17:47:13 -0500
parents 21a86c4ad40c
children 74bed6b35161
files src/audacious/auddrct.c src/audacious/auddrct.h src/audacious/main.c src/audacious/plugin.h src/audacious/pluginenum.c
diffstat 5 files changed, 289 insertions(+), 118 deletions(-) [+]
line wrap: on
line diff
--- a/src/audacious/auddrct.c	Sun Oct 14 16:58:43 2007 -0500
+++ b/src/audacious/auddrct.c	Sun Oct 14 17:47:13 2007 -0500
@@ -36,14 +36,14 @@
 /* player */
 
 void
-audacious_drct_quit ( void )
+drct_quit ( void )
 {
   mainwin_quit_cb();
   return;
 }
 
 void
-audacious_drct_eject ( void )
+drct_eject ( void )
 {
   if (has_x11_connection)
     mainwin_eject_pushed();
@@ -51,7 +51,7 @@
 }
 
 void
-audacious_drct_jtf_show ( void )
+drct_jtf_show ( void )
 {
   if (has_x11_connection)
     ui_jump_to_track();
@@ -59,13 +59,13 @@
 }
 
 gboolean
-audacious_drct_main_win_is_visible ( void )
+drct_main_win_is_visible ( void )
 {
   return cfg.player_visible;
 }
 
 void
-audacious_drct_main_win_toggle ( gboolean show )
+drct_main_win_toggle ( gboolean show )
 {
   if (has_x11_connection)
     mainwin_show(show);
@@ -73,13 +73,13 @@
 }
 
 gboolean
-audacious_drct_eq_win_is_visible ( void )
+drct_eq_win_is_visible ( void )
 {
   return cfg.equalizer_visible;
 }
 
 void
-audacious_drct_eq_win_toggle ( gboolean show )
+drct_eq_win_toggle ( gboolean show )
 {
   if (has_x11_connection)
     equalizerwin_show(show);
@@ -87,13 +87,13 @@
 }
 
 gboolean
-audacious_drct_pl_win_is_visible ( void )
+drct_pl_win_is_visible ( void )
 {
   return cfg.playlist_visible;
 }
 
 void
-audacious_drct_pl_win_toggle ( gboolean show )
+drct_pl_win_toggle ( gboolean show )
 {
   if (has_x11_connection) {
     if (show)
@@ -104,13 +104,13 @@
   return;
 }
 
-void audacious_drct_set_skin(gchar *skinfile)
+void drct_set_skin(gchar *skinfile)
 {
     if (has_x11_connection)
         bmp_active_skin_load(skinfile);
 }
 
-void audacious_drct_activate(void)
+void drct_activate(void)
 {
     gtk_window_present(GTK_WINDOW(mainwin));
 }
@@ -118,7 +118,7 @@
 /* playback */
 
 void
-audacious_drct_play ( void )
+drct_play ( void )
 {
   if (playback_get_paused())
     playback_pause();
@@ -130,14 +130,14 @@
 }
 
 void
-audacious_drct_pause ( void )
+drct_pause ( void )
 {
   playback_pause();
   return;
 }
 
 void
-audacious_drct_stop ( void )
+drct_stop ( void )
 {
   ip_data.stop = TRUE;
   playback_stop();
@@ -147,31 +147,31 @@
 }
 
 gboolean
-audacious_drct_get_playing ( void )
+drct_get_playing ( void )
 {
   return playback_get_playing();
 }
 
 gboolean
-audacious_drct_get_paused ( void )
+drct_get_paused ( void )
 {
   return playback_get_paused();
 }
 
 gboolean
-audacious_drct_get_stopped ( void )
+drct_get_stopped ( void )
 {
   return !playback_get_playing();
 }
 
 void
-audacious_drct_get_info( gint *rate, gint *freq, gint *nch)
+drct_get_info( gint *rate, gint *freq, gint *nch)
 {
     playback_get_sample_params(rate, freq, nch);
 }
 
 gint
-audacious_drct_get_time ( void )
+drct_get_time ( void )
 {
   gint time;
   if (playback_get_playing())
@@ -182,7 +182,7 @@
 }
 
 void
-audacious_drct_seek ( guint pos )
+drct_seek ( guint pos )
 {
   if (playlist_get_current_length(playlist_get_active()) > 0 &&
       pos < (guint)playlist_get_current_length(playlist_get_active()))
@@ -191,14 +191,14 @@
 }
 
 void
-audacious_drct_get_volume ( gint *vl, gint *vr )
+drct_get_volume ( gint *vl, gint *vr )
 {
   input_get_volume(vl, vr);
   return;
 }
 
 void
-audacious_drct_set_volume ( gint vl, gint vr )
+drct_set_volume ( gint vl, gint vr )
 {
   if (vl > 100)
     vl = 100;
@@ -209,19 +209,19 @@
 }
 
 void
-audacious_drct_get_volume_main( gint *v )
+drct_get_volume_main( gint *v )
 {
   gint vl, vr;
-  audacious_drct_get_volume(&vl, &vr);
+  drct_get_volume(&vl, &vr);
   *v = (vl > vr) ? vl : vr;
   return;
 }
 
 void
-audacious_drct_set_volume_main ( gint v )
+drct_set_volume_main ( gint v )
 {
   gint b, vl, vr;
-  audacious_drct_get_volume_balance(&b);
+  drct_get_volume_balance(&b);
   if (b < 0) {
     vl = v;
     vr = (v * (100 - abs(b))) / 100;
@@ -232,11 +232,11 @@
   }
   else
     vl = vr = v;
-  audacious_drct_set_volume(vl, vr);
+  drct_set_volume(vl, vr);
 }
 
 void
-audacious_drct_get_volume_balance ( gint *b )
+drct_get_volume_balance ( gint *b )
 {
   gint vl, vr;
   input_get_volume(&vl, &vr);
@@ -252,14 +252,14 @@
 }
 
 void
-audacious_drct_set_volume_balance ( gint b )
+drct_set_volume_balance ( gint b )
 {
   gint v, vl, vr;
   if (b < -100)
     b = -100;
   if (b > 100)
     b = 100;
-  audacious_drct_get_volume_main(&v);
+  drct_get_volume_main(&v);
   if (b < 0) {
     vl = v;
     vr = (v * (100 - abs(b))) / 100;
@@ -273,7 +273,7 @@
     vl = v;
     vr = v;
   }
-  audacious_drct_set_volume(vl, vr);
+  drct_set_volume(vl, vr);
   return;
 }
 
@@ -281,71 +281,71 @@
 /* playlist */
 
 void
-audacious_drct_pl_next ( void )
+drct_pl_next ( void )
 {
   playlist_next(playlist_get_active());
   return;
 }
 
 void
-audacious_drct_pl_prev ( void )
+drct_pl_prev ( void )
 {
   playlist_prev(playlist_get_active());
   return;
 }
 
 gboolean
-audacious_drct_pl_repeat_is_enabled( void )
+drct_pl_repeat_is_enabled( void )
 {
     return cfg.repeat;
 }
 
 void
-audacious_drct_pl_repeat_toggle( void )
+drct_pl_repeat_toggle( void )
 {
   mainwin_repeat_pushed(!cfg.repeat);
   return;
 }
 
 gboolean
-audacious_drct_pl_repeat_is_shuffled( void )
+drct_pl_repeat_is_shuffled( void )
 {
     return cfg.shuffle;
 }
 
 void
-audacious_drct_pl_shuffle_toggle( void )
+drct_pl_shuffle_toggle( void )
 {
   mainwin_shuffle_pushed(!cfg.shuffle);
   return;
 }
 
 gchar *
-audacious_drct_pl_get_title( gint pos )
+drct_pl_get_title( gint pos )
 {
     return playlist_get_songtitle(playlist_get_active(), pos);
 }
 
 gint
-audacious_drct_pl_get_time( gint pos )
+drct_pl_get_time( gint pos )
 {
     return playlist_get_songtime(playlist_get_active(), pos);
 }
 
 gint
-audacious_drct_pl_get_pos( void )
+drct_pl_get_pos( void )
 {
     return playlist_get_position_nolock(playlist_get_active());
 }
 
 gchar *
-audacious_drct_pl_get_file( gint pos )
+drct_pl_get_file( gint pos )
 {
     return playlist_get_filename(playlist_get_active(), pos);
 }
 
 void
-audacious_drct_pl_add ( GList * list )
+drct_pl_add ( GList * list )
 {
   GList *node = list;
   while ( node != NULL )
@@ -357,7 +357,7 @@
 }
 
 void
-audacious_drct_pl_clear ( void )
+drct_pl_clear ( void )
 {
   playlist_clear(playlist_get_active());
   mainwin_clear_song_info();
@@ -367,7 +367,7 @@
 
 /* following functions are not tested yet. be careful. --yaz */
 void
-audacious_drct_pl_delete ( gint pos )
+drct_pl_delete ( gint pos )
 {
     GDK_THREADS_ENTER();
     playlist_delete_index(playlist_get_active(), pos);
@@ -375,7 +375,7 @@
 }
 
 void
-audacious_drct_pl_set_pos( gint pos )
+drct_pl_set_pos( gint pos )
 {
     Playlist *playlist = playlist_get_active();
     if (pos < (guint)playlist_get_length(playlist))
@@ -383,19 +383,19 @@
 }
 
 gint
-audacious_drct_pl_get_length( void )
+drct_pl_get_length( void )
 {
     return playlist_get_length(playlist_get_active());
 }
 
 void
-audacious_drct_pl_ins_url_string( gchar * string, gint pos )
+drct_pl_ins_url_string( gchar * string, gint pos )
 {
     playlist_ins_url(playlist_get_active(), string, pos);
 }
 
 void
-audacious_drct_pl_add_url_string( gchar * string )
+drct_pl_add_url_string( gchar * string )
 {
     GDK_THREADS_ENTER();
     playlist_add_url(playlist_get_active(), string);
@@ -403,7 +403,7 @@
 }
 
 void
-audacious_drct_pl_enqueue_to_temp( gchar * string )
+drct_pl_enqueue_to_temp( gchar * string )
 {
     Playlist *new_pl = playlist_new();
 
@@ -416,13 +416,13 @@
 
 /* playqueue */
 gint
-audacious_drct_pq_get_length( void )
+drct_pq_get_length( void )
 {
     return playlist_queue_get_length(playlist_get_active());
 }
 
 void
-audacious_drct_pq_add( gint pos )
+drct_pq_add( gint pos )
 {
     Playlist *playlist = playlist_get_active();
     if (pos < (guint)playlist_get_length(playlist))
@@ -430,7 +430,7 @@
 }
 
 void
-audacious_drct_pq_remove( gint pos )
+drct_pq_remove( gint pos )
 {
     Playlist *playlist = playlist_get_active();
     if (pos < (guint)playlist_get_length(playlist))
@@ -438,25 +438,25 @@
 }
 
 void
-audacious_drct_pq_clear( void )
+drct_pq_clear( void )
 {
     playlist_clear_queue(playlist_get_active());
 }
 
 gboolean
-audacious_drct_pq_is_queued( gint pos )
+drct_pq_is_queued( gint pos )
 {
     return playlist_is_position_queued(playlist_get_active(), pos);
 }
 
 gint
-audacious_drct_pq_get_position( gint pos )
+drct_pq_get_position( gint pos )
 {
     return playlist_get_queue_position_number(playlist_get_active(), pos);
 }
 
 gint
-audaciuos_drct_pq_get_queue_position( gint pos )
+drct_pq_get_queue_position( gint pos )
 {
     return playlist_get_queue_position_number(playlist_get_active(), pos);
 }
--- a/src/audacious/auddrct.h	Sun Oct 14 16:58:43 2007 -0500
+++ b/src/audacious/auddrct.h	Sun Oct 14 17:47:13 2007 -0500
@@ -27,63 +27,63 @@
 #include <glib.h>
 
 /* player */
-void audacious_drct_quit ( void );
-void audacious_drct_eject ( void );
-void audacious_drct_jtf_show ( void );
-gboolean audacious_drct_main_win_is_visible ( void );
-void audacious_drct_main_win_toggle ( gboolean );
-gboolean audacious_drct_eq_win_is_visible ( void );
-void audacious_drct_eq_win_toggle ( gboolean );
-gboolean audacious_drct_pl_win_is_visible ( void );
-void audacious_drct_pl_win_toggle ( gboolean );
-void audacious_drct_set_skin(gchar *skinfile);
-void audacious_drct_activate(void);
+void drct_quit ( void );
+void drct_eject ( void );
+void drct_jtf_show ( void );
+gboolean drct_main_win_is_visible ( void );
+void drct_main_win_toggle ( gboolean );
+gboolean drct_eq_win_is_visible ( void );
+void drct_eq_win_toggle ( gboolean );
+gboolean drct_pl_win_is_visible ( void );
+void drct_pl_win_toggle ( gboolean );
+void drct_set_skin(gchar *skinfile);
+void drct_activate(void);
 
 /* playback */
-void audacious_drct_play ( void );
-void audacious_drct_pause ( void );
-void audacious_drct_stop ( void );
-gboolean audacious_drct_get_playing ( void );
-gboolean audacious_drct_get_paused ( void );
-gboolean audacious_drct_get_stopped ( void );
-void audacious_drct_get_info( gint *rate, gint *freq, gint *nch);
-gint audacious_drct_get_time ( void );
-void audacious_drct_seek ( guint pos );
-void audacious_drct_get_volume( gint *vl, gint *vr );
-void audacious_drct_set_volume( gint vl, gint vr );
-void audacious_drct_get_volume_main( gint *v );
-void audacious_drct_set_volume_main( gint v );
-void audacious_drct_get_volume_balance( gint *b );
-void audacious_drct_set_volume_balance( gint b );
+void drct_play ( void );
+void drct_pause ( void );
+void drct_stop ( void );
+gboolean drct_get_playing ( void );
+gboolean drct_get_paused ( void );
+gboolean drct_get_stopped ( void );
+void drct_get_info( gint *rate, gint *freq, gint *nch);
+gint drct_get_time ( void );
+void drct_seek ( guint pos );
+void drct_get_volume( gint *vl, gint *vr );
+void drct_set_volume( gint vl, gint vr );
+void drct_get_volume_main( gint *v );
+void drct_set_volume_main( gint v );
+void drct_get_volume_balance( gint *b );
+void drct_set_volume_balance( gint b );
 
 /* playlist */
-void audacious_drct_pl_next( void );
-void audacious_drct_pl_prev( void );
-gboolean audacious_drct_pl_repeat_is_enabled ( void );
-void audacious_drct_pl_repeat_toggle ( void );
-gboolean audacious_drct_pl_repeat_is_shuffled ( void );
-void audacious_drct_pl_shuffle_toggle ( void );
-gchar *audacious_drct_pl_get_title( gint pos );
-gint audacious_drct_pl_get_time( gint pos );
-gint audacious_drct_pl_get_pos( void );
-gchar *audacious_drct_pl_get_file( gint pos );
-void audacious_drct_pl_add ( GList * list );
-void audacious_drct_pl_clear ( void );
-gint audacious_drct_pl_get_length( void );
-void audacious_drct_pl_delete ( gint pos );
-void audacious_drct_pl_set_pos( gint pos );
-void audacious_drct_pl_ins_url_string( gchar * string, gint pos );
-void audacious_drct_pl_add_url_string( gchar * string );
-void audacious_drct_pl_enqueue_to_temp( gchar * string );
+void drct_pl_next( void );
+void drct_pl_prev( void );
+gboolean drct_pl_repeat_is_enabled ( void );
+void drct_pl_repeat_toggle ( void );
+gboolean drct_pl_repeat_is_shuffled ( void );
+void drct_pl_shuffle_toggle ( void );
+gchar *drct_pl_get_title( gint pos );
+gint drct_pl_get_time( gint pos );
+gint drct_pl_get_pos( void );
+gchar *drct_pl_get_file( gint pos );
+void drct_pl_add ( GList * list );
+void drct_pl_clear ( void );
+gint drct_pl_get_length( void );
+void drct_pl_delete ( gint pos );
+void drct_pl_set_pos( gint pos );
+void drct_pl_ins_url_string( gchar * string, gint pos );
+void drct_pl_add_url_string( gchar * string );
+void drct_pl_enqueue_to_temp( gchar * string );
 
 /* playqueue */
-gint audacious_drct_pq_get_length( void );
-void audacious_drct_pq_add( gint pos );
-void audacious_drct_pq_remove( gint pos );
-void audacious_drct_pq_clear( void );
-gboolean audacious_drct_pq_is_queued( gint pos );
-gint audacious_drct_pq_get_position( gint pos );
-gint audaciuos_drct_pq_get_queue_position( gint pos );
+gint drct_pq_get_length( void );
+void drct_pq_add( gint pos );
+void drct_pq_remove( gint pos );
+void drct_pq_clear( void );
+gboolean drct_pq_is_queued( gint pos );
+gint drct_pq_get_position( gint pos );
+gint drct_pq_get_queue_position( gint pos );
 
 /* adjust naming scheme to audacious_remote_* functions */
 #define audacious_drct_show_jtf_box audacious_drct_jtf_show
--- a/src/audacious/main.c	Sun Oct 14 16:58:43 2007 -0500
+++ b/src/audacious/main.c	Sun Oct 14 17:47:13 2007 -0500
@@ -1184,35 +1184,35 @@
             audacious_remote_activate(session);
     } else {
         if (options->rew)
-            audacious_drct_playlist_prev();
+            drct_pl_prev();
 
         if (options->play)
-            audacious_drct_play();
+            drct_play();
 
         if (options->pause)
-            audacious_drct_pause();
+            drct_pause();
 
         if (options->stop)
-            audacious_drct_stop();
+            drct_stop();
 
         if (options->fwd)
-            audacious_drct_playlist_next();
+            drct_pl_next();
 
         if (options->play_pause) {
-            if (audacious_drct_get_paused())
-                audacious_drct_play();
+            if (drct_get_paused())
+                drct_play();
             else
-                audacious_drct_pause();
+                drct_pause();
         }
 
         if (options->show_jump_box)
-            audacious_drct_show_jtf_box();
+            drct_jtf_show();
 
         if (options->mainwin)
-            audacious_drct_main_win_toggle(TRUE);
+            drct_main_win_toggle(TRUE);
 
         if (options->activate)
-            audacious_drct_activate();
+            drct_activate();
     }
 
     if(remote) {
--- a/src/audacious/plugin.h	Sun Oct 14 16:58:43 2007 -0500
+++ b/src/audacious/plugin.h	Sun Oct 14 17:47:13 2007 -0500
@@ -474,6 +474,65 @@
     gint (*menu_plugin_item_add)(gint, GtkWidget *);
     gint (*menu_plugin_item_remove)(gint, GtkWidget *);
 
+    /* DRCT API. */
+    void (*drct_quit) ( void );
+    void (*drct_eject) ( void );
+    void (*drct_jtf_show) ( void );
+    gboolean (*drct_main_win_is_visible)( void );
+    void (*drct_main_win_toggle) ( gboolean );
+    gboolean (*drct_eq_win_is_visible)( void );
+    void (*drct_eq_win_toggle) ( gboolean );
+    gboolean (*drct_pl_win_is_visible)( void );
+    void (*drct_pl_win_toggle) ( gboolean );
+    void (*drct_set_skin)(gchar *skinfile);
+    void (*drct_activate)(void);
+
+    /* DRCT API: playback */
+    void (*drct_play) ( void );
+    void (*drct_pause) ( void );
+    void (*drct_stop) ( void );
+    gboolean (*drct_get_playing)( void );
+    gboolean (*drct_get_paused)( void );
+    gboolean (*drct_get_stopped)( void );
+    void (*drct_get_info)( gint *rate, gint *freq, gint *nch);
+    gint (*drct_get_time )( void );
+    void (*drct_seek) ( guint pos );
+    void (*drct_get_volume)( gint *vl, gint *vr );
+    void (*drct_set_volume)( gint vl, gint vr );
+    void (*drct_get_volume_main)( gint *v );
+    void (*drct_set_volume_main)( gint v );
+    void (*drct_get_volume_balance)( gint *b );
+    void (*drct_set_volume_balance)( gint b );
+
+    /* DRCT API: playlist */
+    void (*drct_pl_next)( void );
+    void (*drct_pl_prev)( void );
+    gboolean (*drct_pl_repeat_is_enabled)( void );
+    void (*drct_pl_repeat_toggle) ( void );
+    gboolean (*drct_pl_repeat_is_shuffled)( void );
+    void (*drct_pl_shuffle_toggle) ( void );
+    gchar *(*drct_pl_get_title)( gint pos );
+    gint (*drct_pl_get_time)( gint pos );
+    gint (*drct_pl_get_pos)( void );
+    gchar *(*drct_pl_get_file)( gint pos );
+    void (*drct_pl_add) ( GList * list );
+    void (*drct_pl_clear) ( void );
+    gint (*drct_pl_get_length)( void );
+    void (*drct_pl_delete) ( gint pos );
+    void (*drct_pl_set_pos)( gint pos );
+    void (*drct_pl_ins_url_string)( gchar * string, gint pos );
+    void (*drct_pl_add_url_string)( gchar * string );
+    void (*drct_pl_enqueue_to_temp)( gchar * string );
+
+    /* DRCT API: playqueue */
+    gint (*drct_pq_get_length)( void );
+    void (*drct_pq_add)( gint pos );
+    void (*drct_pq_remove)( gint pos );
+    void (*drct_pq_clear)( void );
+    gboolean (*drct_pq_is_queued)( gint pos );
+    gint (*drct_pq_get_position)( gint pos );
+    gint (*drct_pq_get_queue_position)( gint pos );
+
 };
 
 /* Convenience macros for accessing the public API. */
@@ -714,6 +773,63 @@
 #define aud_menu_plugin_item_add		_audvt->menu_plugin_item_add
 #define aud_menu_plugin_item_remove		_audvt->menu_plugin_item_remove
 
+#define audacious_drct_quit			_audvt->drct_quit
+#define audacious_drct_eject			_audvt->drct_eject
+#define audacious_drct_jtf_show			_audvt->drct_jtf_show
+#define audacious_drct_main_win_is_visible	_audvt->drct_main_win_is_visible
+#define audacious_drct_main_win_toggle		_audvt->drct_main_win_toggle
+#define audacious_drct_eq_win_is_visible	_audvt->drct_eq_win_is_visible
+#define audacious_drct_eq_win_toggle		_audvt->drct_eq_win_toggle
+#define audacious_drct_pl_win_is_visible	_audvt->drct_pl_win_is_visible
+#define audacious_drct_pl_win_toggle		_audvt->drct_pl_win_toggle
+#define audacious_drct_set_skin			_audvt->drct_set_skin
+#define audacious_drct_activate			_audvt->drct_activate
+
+#define audacious_drct_play			_audvt->drct_play
+#define audacious_drct_pause			_audvt->drct_pause
+#define audacious_drct_stop			_audvt->drct_stop
+#define audacious_drct_get_playing		_audvt->drct_get_playing
+#define audacious_drct_get_paused		_audvt->drct_get_paused
+#define audacious_drct_get_stopped		_audvt->drct_get_stopped
+#define audacious_drct_get_info			_audvt->drct_get_info
+#define audacious_drct_get_time			_audvt->drct_get_time
+#define audacious_drct_seek			_audvt->drct_seek
+#define audacious_drct_get_volume		_audvt->drct_get_volume
+#define audacious_drct_set_volume		_audvt->drct_set_volume
+#define audacious_drct_get_volume_main		_audvt->drct_get_volume_main
+#define audacious_drct_set_volume_main		_audvt->drct_set_volume_main
+#define audacious_drct_get_volume_balance	_audvt->drct_get_volume_balance
+#define audacious_drct_set_volume_balance	_audvt->drct_set_volume_balance
+
+#define audacious_drct_pl_next			_audvt->drct_pl_next
+#define audacious_drct_pl_prev			_audvt->drct_pl_prev
+#define audacious_drct_pl_repeat_is_enabled	_audvt->drct_pl_repeat_is_enabled
+#define audacious_drct_pl_repeat_toggle		_audvt->drct_pl_repeat_toggle
+#define audacious_drct_pl_repeat_is_shuffled	_audvt->drct_pl_repeat_is_shuffled
+#define audacious_drct_pl_shuffle_toggle	_audvt->drct_pl_shuffle_toggle
+#define audacious_drct_pl_get_title		_audvt->drct_pl_get_title
+#define audacious_drct_pl_get_time		_audvt->drct_pl_get_time
+#define audacious_drct_pl_get_pos		_audvt->drct_pl_get_pos
+#define audacious_drct_pl_get_file		_audvt->drct_pl_get_file
+#define audacious_drct_pl_add			_audvt->drct_pl_add
+#define audacious_drct_pl_clear			_audvt->drct_pl_clear
+#define audacious_drct_pl_get_length		_audvt->drct_pl_get_length
+#define audacious_drct_pl_delete		_audvt->drct_pl_delete
+#define audacious_drct_pl_set_pos		_audvt->drct_pl_set_pos
+#define audacious_drct_pl_ins_url_string	_audvt->drct_pl_ins_url_string
+#define audacious_drct_pl_add_url_string	_audvt->drct_pl_add_url_string
+#define audacious_drct_pl_enqueue_to_temp	_audvt->drct_pl_enqueue_to_temp
+
+#define audacious_drct_pq_get_length		_audvt->drct_pq_get_length
+#define audacious_drct_pq_add			_audvt->drct_pq_add
+#define audacious_drct_pq_remove		_audvt->drct_pq_remove
+#define audacious_drct_pq_clear			_audvt->drct_pq_clear
+#define audacious_drct_pq_is_queued		_audvt->drct_pq_is_queued
+#define audacious_drct_pq_get_position		_audvt->drct_pq_get_position
+#define audacious_drct_pq_get_queue_position	_audvt->drct_pq_get_queue_position
+
+#include "audacious/auddrct.h"
+
 /* for multi-file plugins :( */
 extern struct _AudaciousFuncTableV1 *_audvt;
 
--- a/src/audacious/pluginenum.c	Sun Oct 14 16:58:43 2007 -0500
+++ b/src/audacious/pluginenum.c	Sun Oct 14 17:47:13 2007 -0500
@@ -282,6 +282,61 @@
 
     .menu_plugin_item_add = menu_plugin_item_add,
     .menu_plugin_item_remove = menu_plugin_item_remove,
+
+    .drct_quit = drct_quit,
+    .drct_eject = drct_eject,
+    .drct_jtf_show = drct_jtf_show,
+    .drct_main_win_is_visible = drct_main_win_is_visible,
+    .drct_main_win_toggle = drct_main_win_toggle,
+    .drct_eq_win_is_visible = drct_eq_win_is_visible,
+    .drct_eq_win_toggle = drct_eq_win_toggle,
+    .drct_pl_win_is_visible = drct_pl_win_is_visible,
+    .drct_pl_win_toggle = drct_pl_win_toggle,
+    .drct_set_skin = drct_set_skin,
+    .drct_activate = drct_activate,
+
+    .drct_play = drct_play,
+    .drct_pause = drct_pause,
+    .drct_stop = drct_stop,
+    .drct_get_playing = drct_get_playing,
+    .drct_get_paused = drct_get_paused,
+    .drct_get_stopped = drct_get_stopped,
+    .drct_get_info = drct_get_info,
+    .drct_get_time = drct_get_time,
+    .drct_seek = drct_seek,
+    .drct_get_volume = drct_get_volume,
+    .drct_set_volume = drct_set_volume,
+    .drct_get_volume_main = drct_get_volume_main,
+    .drct_set_volume_main = drct_set_volume_main,
+    .drct_get_volume_balance = drct_get_volume_balance,
+    .drct_set_volume_balance = drct_set_volume_balance,
+
+    .drct_pl_next = drct_pl_next,
+    .drct_pl_prev = drct_pl_prev,
+    .drct_pl_repeat_is_enabled = drct_pl_repeat_is_enabled,
+    .drct_pl_repeat_toggle = drct_pl_repeat_toggle,
+    .drct_pl_repeat_is_shuffled = drct_pl_repeat_is_shuffled,
+    .drct_pl_shuffle_toggle = drct_pl_shuffle_toggle,
+    .drct_pl_get_title = drct_pl_get_title,
+    .drct_pl_get_time = drct_pl_get_time,
+    .drct_pl_get_pos = drct_pl_get_pos,
+    .drct_pl_get_file = drct_pl_get_file,
+    .drct_pl_add = drct_pl_add,
+    .drct_pl_clear = drct_pl_clear,
+    .drct_pl_get_length = drct_pl_get_length,
+    .drct_pl_delete = drct_pl_delete,
+    .drct_pl_set_pos = drct_pl_set_pos,
+    .drct_pl_ins_url_string = drct_pl_ins_url_string,
+    .drct_pl_add_url_string = drct_pl_add_url_string,
+    .drct_pl_enqueue_to_temp = drct_pl_enqueue_to_temp,
+
+    .drct_pq_get_length = drct_pq_get_length,
+    .drct_pq_add = drct_pq_add,
+    .drct_pq_remove = drct_pq_remove,
+    .drct_pq_clear = drct_pq_clear,
+    .drct_pq_is_queued = drct_pq_is_queued,
+    .drct_pq_get_position = drct_pq_get_position,
+    .drct_pq_get_queue_position = drct_pq_get_queue_position,
 };
 
 /*****************************************************************/