# HG changeset patch # User nenolod # Date 1138468881 28800 # Node ID e4e897d20791c7ad448d34b6efd62e0b60a7a134 # Parent f2b06f94d51e7efccaa1cb2d25644275ae9bb4cb [svn] remove libaudcore, we never did anything with it diff -r f2b06f94d51e -r e4e897d20791 Makefile.am --- a/Makefile.am Sat Jan 28 09:15:54 2006 -0800 +++ b/Makefile.am Sat Jan 28 09:21:21 2006 -0800 @@ -1,6 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = intl libaudacious libaudcore audacious Plugins po icons skin +SUBDIRS = intl libaudacious audacious Plugins po icons skin man_MANS = audacious.1 @@ -9,7 +9,7 @@ EXTRA_DIST = \ FAQ \ - bmp.spec \ + audacious.spec \ README.bmp \ $(pkgconfig_DATA) \ $(wildcard m4/*.m4) diff -r f2b06f94d51e -r e4e897d20791 audacious/Makefile.am --- a/audacious/Makefile.am Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/Makefile.am Sat Jan 28 09:21:21 2006 -0800 @@ -9,8 +9,7 @@ $(GTK_LIBS) \ $(LIBGLADE_LIBS) \ $(LTLIBINTL) \ - $(top_builddir)/libaudacious/libaudacious.la \ - $(top_builddir)/libaudcore/libaudcore.la + $(top_builddir)/libaudacious/libaudacious.la audacious_CFLAGS = \ $(GTK_CFLAGS) \ diff -r f2b06f94d51e -r e4e897d20791 audacious/controlsocket.c --- a/audacious/controlsocket.c Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/controlsocket.c Sat Jan 28 09:21:21 2006 -0800 @@ -36,7 +36,7 @@ #include "equalizer.h" #include "mainwin.h" #include "input.h" -#include "libaudcore/playback.h" +#include "playback.h" #include "playlist.h" #include "ui_playlist.h" #include "prefswin.h" diff -r f2b06f94d51e -r e4e897d20791 audacious/genevent.c --- a/audacious/genevent.c Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/genevent.c Sat Jan 28 09:21:21 2006 -0800 @@ -63,7 +63,7 @@ #include "logger.h" #include "mainwin.h" #include "output.h" -#include "libaudcore/playback.h" +#include "playback.h" #include "playlist.h" #include "ui_playlist.h" #include "pluginenum.h" diff -r f2b06f94d51e -r e4e897d20791 audacious/input.c --- a/audacious/input.c Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/input.c Sat Jan 28 09:21:21 2006 -0800 @@ -35,7 +35,7 @@ #include "output.h" #include "util.h" #include "visualization.h" -#include "libaudcore/playback.h" +#include "playback.h" #include "playstatus.h" #include "pluginenum.h" diff -r f2b06f94d51e -r e4e897d20791 audacious/main.c --- a/audacious/main.c Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/main.c Sat Jan 28 09:21:21 2006 -0800 @@ -64,7 +64,7 @@ #include "logger.h" #include "mainwin.h" #include "output.h" -#include "libaudcore/playback.h" +#include "playback.h" #include "playlist.h" #include "ui_playlist.h" #include "pluginenum.h" diff -r f2b06f94d51e -r e4e897d20791 audacious/mainwin.c --- a/audacious/mainwin.c Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/mainwin.c Sat Jan 28 09:21:21 2006 -0800 @@ -60,7 +60,7 @@ #include "menurow.h" #include "monostereo.h" #include "pbutton.h" -#include "libaudcore/playback.h" +#include "playback.h" #include "playlist.h" #include "playlist_list.h" #include "playstatus.h" diff -r f2b06f94d51e -r e4e897d20791 audacious/playback.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/audacious/playback.c Sat Jan 28 09:21:21 2006 -0800 @@ -0,0 +1,290 @@ +/* BMP - Cross-platform multimedia player + * Copyright (C) 2003-2004 BMP development team. + * + * Based on XMMS: + * Copyright (C) 1998-2003 XMMS development team. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public Licensse as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "libaudacious/util.h" +#include "libaudacious/configdb.h" + +#include "input.h" +#include "main.h" +#include "mainwin.h" +#include "equalizer.h" +#include "output.h" +#include "playlist.h" +#include "ui_playlist.h" +#include "playlist_list.h" +#include "skin.h" +#include "skinwin.h" +#include "urldecode.h" +#include "util.h" + + +#include "playback.h" + + +/* FIXME: yuck!! this shouldn't be here... */ +void +bmp_playback_set_random_skin(void) +{ + SkinNode *node; + guint32 randval; + + /* Get a random value to select the skin to use */ + randval = g_random_int_range(0, g_list_length(skinlist)); + node = g_list_nth(skinlist, randval)->data; + bmp_active_skin_load(node->path); +} + +gint +bmp_playback_get_time(void) +{ + if (!bmp_playback_get_playing()) + return -1; + + if (!get_current_input_plugin()) + return -1; + + return get_current_input_plugin()->get_time(); +} + +void +bmp_playback_initiate(void) +{ + PlaylistEntry *entry; + + if (playlist_get_length() == 0) + return; + + if (bmp_playback_get_playing()) + bmp_playback_stop(); + + vis_clear_data(mainwin_vis); + vis_clear_data(playlistwin_vis); + svis_clear_data(mainwin_svis); + mainwin_disable_seekbar(); + + entry = playlist_get_entry_to_play(); + + if (!entry) + return; + + if (!bmp_playback_play_file(entry)) + return; + + if (bmp_playback_get_time() != -1) { + equalizerwin_load_auto_preset(entry->filename); + input_set_eq(cfg.equalizer_active, cfg.equalizer_preamp, + cfg.equalizer_bands); + output_set_eq(cfg.equalizer_active, cfg.equalizer_preamp, + cfg.equalizer_bands); + } + + playlist_check_pos_current(); + mainwin_set_info_text(); +} + +void +bmp_playback_pause(void) +{ + if (!bmp_playback_get_playing()) + return; + + if (!get_current_input_plugin()) + return; + + ip_data.paused = !ip_data.paused; + + if (ip_data.paused) + playstatus_set_status(mainwin_playstatus, STATUS_PAUSE); + else + playstatus_set_status(mainwin_playstatus, STATUS_PLAY); + + if (get_current_input_plugin()->pause) + get_current_input_plugin()->pause(ip_data.paused); +} + +void +bmp_playback_stop(void) +{ + if (ip_data.playing && get_current_input_plugin()) { + ip_data.playing = FALSE; + + if (bmp_playback_get_paused()) + bmp_playback_pause(); + + if (get_current_input_plugin()->stop) + get_current_input_plugin()->stop(); + + free_vis_data(); + ip_data.paused = FALSE; + + if (input_info_text) { + g_free(input_info_text); + input_info_text = NULL; + mainwin_set_info_text(); + } + } + + ip_data.playing = FALSE; +} + +void +bmp_playback_stop_reentrant(void) +{ + if (ip_data.playing && get_current_input_plugin()) { + ip_data.playing = FALSE; + + if (bmp_playback_get_paused()) + bmp_playback_pause(); + + free_vis_data(); + ip_data.paused = FALSE; + + if (input_info_text) { + g_free(input_info_text); + input_info_text = NULL; + mainwin_set_info_text(); + } + } + + ip_data.playing = FALSE; +} + +static void +run_no_output_plugin_dialog(void) +{ + const gchar *markup = + N_("No output plugin selected.\n" + "You have not selected an output plugin."); + + GtkWidget *dialog = + gtk_message_dialog_new_with_markup(GTK_WINDOW(mainwin), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + _(markup)); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +gboolean +bmp_playback_play_file(PlaylistEntry *entry) +{ + g_return_val_if_fail(entry != NULL, FALSE); + + if (!get_current_output_plugin()) { + run_no_output_plugin_dialog(); + mainwin_stop_pushed(); + return FALSE; + } + + if (cfg.random_skin_on_play) + bmp_playback_set_random_skin(); + + if (!entry->decoder) + entry->decoder = input_check_file(entry->filename, FALSE); + + if (!entry->decoder || !input_is_enabled(entry->decoder->filename)) + { + input_file_not_playable(entry->filename); + + set_current_input_plugin(NULL); + mainwin_set_info_text(); + + return FALSE; + } + + set_current_input_plugin(entry->decoder); + entry->decoder->output = get_current_output_plugin(); + entry->decoder->play_file(entry->filename); + + ip_data.playing = TRUE; + + return TRUE; +} + +gboolean +bmp_playback_get_playing(void) +{ + return ip_data.playing; +} + +gboolean +bmp_playback_get_paused(void) +{ + return ip_data.paused; +} + +void +bmp_playback_seek(gint time) +{ + gboolean restore_pause = FALSE; + gint l=0, r=0; + + if (!ip_data.playing) + return; + + if (!get_current_input_plugin()) + return; + + /* FIXME WORKAROUND...that should work with all plugins + * mute the volume, start playback again, do the seek, then pause again + * -Patrick Sudowe */ + if(ip_data.paused) + { + restore_pause = TRUE; + output_get_volume(&l, &r); + output_set_volume(0,0); + bmp_playback_pause(); + } + + free_vis_data(); + get_current_input_plugin()->seek(time); + + if(restore_pause) + { + bmp_playback_pause(); + output_set_volume(l, r); + } +} + +void +bmp_playback_seek_relative(gint offset) +{ + gint time = CLAMP(bmp_playback_get_time() / 1000 + offset, + 0, playlist_get_current_length() / 1000 - 1); + bmp_playback_seek(time); +} diff -r f2b06f94d51e -r e4e897d20791 audacious/playback.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/audacious/playback.h Sat Jan 28 09:21:21 2006 -0800 @@ -0,0 +1,38 @@ +/* BMP - Cross-platform multimedia player + * Copyright (C) 2003-2004 BMP development team. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef PLAYBACK_H +#define PLAYBACK_H + +#include + +#include "audacious/playlist.h" + +void bmp_playback_set_random_skin(void); +gint bmp_playback_get_time(void); +void bmp_playback_initiate(void); +void bmp_playback_pause(void); +void bmp_playback_stop(void); +void bmp_playback_stop_reentrant(void); +gboolean bmp_playback_play_file(PlaylistEntry *entry); +gboolean bmp_playback_get_playing(void); +gboolean bmp_playback_get_paused(void); +void bmp_playback_seek(gint time); +void bmp_playback_seek_relative(gint offset); + +#endif diff -r f2b06f94d51e -r e4e897d20791 audacious/playlist.c --- a/audacious/playlist.c Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/playlist.c Sat Jan 28 09:21:21 2006 -0800 @@ -47,7 +47,7 @@ #include "libaudacious/configdb.h" #include "libaudacious/vfs.h" #include "equalizer.h" -#include "libaudcore/playback.h" +#include "playback.h" #include "playlist.h" #include "ui_playlist.h" #include "playlist_list.h" diff -r f2b06f94d51e -r e4e897d20791 audacious/playlist_list.c --- a/audacious/playlist_list.c Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/playlist_list.c Sat Jan 28 09:21:21 2006 -0800 @@ -40,7 +40,7 @@ #include "main.h" #include "input.h" -#include "libaudcore/playback.h" +#include "playback.h" #include "playlist.h" #include "ui_playlist.h" #include "util.h" diff -r f2b06f94d51e -r e4e897d20791 audacious/pluginenum.c --- a/audacious/pluginenum.c Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/pluginenum.c Sat Jan 28 09:21:21 2006 -0800 @@ -32,7 +32,7 @@ #include "controlsocket.h" #include "main.h" -#include "libaudcore/playback.h" +#include "playback.h" #include "playlist.h" #include "util.h" diff -r f2b06f94d51e -r e4e897d20791 audacious/ui_playlist.c --- a/audacious/ui_playlist.c Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/ui_playlist.c Sat Jan 28 09:21:21 2006 -0800 @@ -43,7 +43,7 @@ #include "input.h" #include "main.h" #include "mainwin.h" -#include "libaudcore/playback.h" +#include "playback.h" #include "playlist.h" #include "playlist_list.h" #include "playlist_slider.h" diff -r f2b06f94d51e -r e4e897d20791 audacious/util.c --- a/audacious/util.c Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/util.c Sat Jan 28 09:21:21 2006 -0800 @@ -52,7 +52,7 @@ #include "glade.h" #include "input.h" #include "main.h" -#include "libaudcore/playback.h" +#include "playback.h" #include "playlist.h" #include "ui_playlist.h" diff -r f2b06f94d51e -r e4e897d20791 audacious/visualization.c --- a/audacious/visualization.c Sat Jan 28 09:15:54 2006 -0800 +++ b/audacious/visualization.c Sat Jan 28 09:21:21 2006 -0800 @@ -29,7 +29,7 @@ #include "fft.h" #include "input.h" #include "main.h" -#include "libaudcore/playback.h" +#include "playback.h" #include "plugin.h" #include "prefswin.h" #include "svis.h" diff -r f2b06f94d51e -r e4e897d20791 libaudcore/Makefile.am --- a/libaudcore/Makefile.am Sat Jan 28 09:15:54 2006 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -ACLOCAL_AMFLAGS = -I ../m4 -AUTOMAKE_OPTIONS = foreign - -beepincludedir = $(includedir)/audacious - -lib_LTLIBRARIES = libaudcore.la - -libaudcore_la_LDFLAGS = -export-dynamic -version-info $(LIBBEEP_MAJOR_VERSION):$(LIBBEEP_MINOR_VERSION):$(LIBBEEP_MICRO_VERSION) - -libaudcore_la_LIBADD = \ - $(GTK_LIBS) \ - $(GCONF_LIBS) \ - $(GNOMEVFS_LIBS) - -INCLUDES = \ - $(GTK_CFLAGS) \ - $(GCONF_CFLAGS) \ - $(GNOMEVFS_CFLAGS) \ - -I$(top_srcdir) \ - -I$(top_srcdir)/intl \ - -I$(top_srcdir)/audacious - -libaudcore_la_SOURCES = \ - playback.c playback.h diff -r f2b06f94d51e -r e4e897d20791 libaudcore/playback.c --- a/libaudcore/playback.c Sat Jan 28 09:15:54 2006 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,290 +0,0 @@ -/* BMP - Cross-platform multimedia player - * Copyright (C) 2003-2004 BMP development team. - * - * Based on XMMS: - * Copyright (C) 1998-2003 XMMS development team. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public Licensse as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "libaudacious/util.h" -#include "libaudacious/configdb.h" - -#include "input.h" -#include "main.h" -#include "mainwin.h" -#include "equalizer.h" -#include "output.h" -#include "playlist.h" -#include "ui_playlist.h" -#include "playlist_list.h" -#include "skin.h" -#include "skinwin.h" -#include "urldecode.h" -#include "util.h" - - -#include "playback.h" - - -/* FIXME: yuck!! this shouldn't be here... */ -void -bmp_playback_set_random_skin(void) -{ - SkinNode *node; - guint32 randval; - - /* Get a random value to select the skin to use */ - randval = g_random_int_range(0, g_list_length(skinlist)); - node = g_list_nth(skinlist, randval)->data; - bmp_active_skin_load(node->path); -} - -gint -bmp_playback_get_time(void) -{ - if (!bmp_playback_get_playing()) - return -1; - - if (!get_current_input_plugin()) - return -1; - - return get_current_input_plugin()->get_time(); -} - -void -bmp_playback_initiate(void) -{ - PlaylistEntry *entry; - - if (playlist_get_length() == 0) - return; - - if (bmp_playback_get_playing()) - bmp_playback_stop(); - - vis_clear_data(mainwin_vis); - vis_clear_data(playlistwin_vis); - svis_clear_data(mainwin_svis); - mainwin_disable_seekbar(); - - entry = playlist_get_entry_to_play(); - - if (!entry) - return; - - if (!bmp_playback_play_file(entry)) - return; - - if (bmp_playback_get_time() != -1) { - equalizerwin_load_auto_preset(entry->filename); - input_set_eq(cfg.equalizer_active, cfg.equalizer_preamp, - cfg.equalizer_bands); - output_set_eq(cfg.equalizer_active, cfg.equalizer_preamp, - cfg.equalizer_bands); - } - - playlist_check_pos_current(); - mainwin_set_info_text(); -} - -void -bmp_playback_pause(void) -{ - if (!bmp_playback_get_playing()) - return; - - if (!get_current_input_plugin()) - return; - - ip_data.paused = !ip_data.paused; - - if (ip_data.paused) - playstatus_set_status(mainwin_playstatus, STATUS_PAUSE); - else - playstatus_set_status(mainwin_playstatus, STATUS_PLAY); - - if (get_current_input_plugin()->pause) - get_current_input_plugin()->pause(ip_data.paused); -} - -void -bmp_playback_stop(void) -{ - if (ip_data.playing && get_current_input_plugin()) { - ip_data.playing = FALSE; - - if (bmp_playback_get_paused()) - bmp_playback_pause(); - - if (get_current_input_plugin()->stop) - get_current_input_plugin()->stop(); - - free_vis_data(); - ip_data.paused = FALSE; - - if (input_info_text) { - g_free(input_info_text); - input_info_text = NULL; - mainwin_set_info_text(); - } - } - - ip_data.playing = FALSE; -} - -void -bmp_playback_stop_reentrant(void) -{ - if (ip_data.playing && get_current_input_plugin()) { - ip_data.playing = FALSE; - - if (bmp_playback_get_paused()) - bmp_playback_pause(); - - free_vis_data(); - ip_data.paused = FALSE; - - if (input_info_text) { - g_free(input_info_text); - input_info_text = NULL; - mainwin_set_info_text(); - } - } - - ip_data.playing = FALSE; -} - -static void -run_no_output_plugin_dialog(void) -{ - const gchar *markup = - N_("No output plugin selected.\n" - "You have not selected an output plugin."); - - GtkWidget *dialog = - gtk_message_dialog_new_with_markup(GTK_WINDOW(mainwin), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _(markup)); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); -} - -gboolean -bmp_playback_play_file(PlaylistEntry *entry) -{ - g_return_val_if_fail(entry != NULL, FALSE); - - if (!get_current_output_plugin()) { - run_no_output_plugin_dialog(); - mainwin_stop_pushed(); - return FALSE; - } - - if (cfg.random_skin_on_play) - bmp_playback_set_random_skin(); - - if (!entry->decoder) - entry->decoder = input_check_file(entry->filename, FALSE); - - if (!entry->decoder || !input_is_enabled(entry->decoder->filename)) - { - input_file_not_playable(entry->filename); - - set_current_input_plugin(NULL); - mainwin_set_info_text(); - - return FALSE; - } - - set_current_input_plugin(entry->decoder); - entry->decoder->output = get_current_output_plugin(); - entry->decoder->play_file(entry->filename); - - ip_data.playing = TRUE; - - return TRUE; -} - -gboolean -bmp_playback_get_playing(void) -{ - return ip_data.playing; -} - -gboolean -bmp_playback_get_paused(void) -{ - return ip_data.paused; -} - -void -bmp_playback_seek(gint time) -{ - gboolean restore_pause = FALSE; - gint l=0, r=0; - - if (!ip_data.playing) - return; - - if (!get_current_input_plugin()) - return; - - /* FIXME WORKAROUND...that should work with all plugins - * mute the volume, start playback again, do the seek, then pause again - * -Patrick Sudowe */ - if(ip_data.paused) - { - restore_pause = TRUE; - output_get_volume(&l, &r); - output_set_volume(0,0); - bmp_playback_pause(); - } - - free_vis_data(); - get_current_input_plugin()->seek(time); - - if(restore_pause) - { - bmp_playback_pause(); - output_set_volume(l, r); - } -} - -void -bmp_playback_seek_relative(gint offset) -{ - gint time = CLAMP(bmp_playback_get_time() / 1000 + offset, - 0, playlist_get_current_length() / 1000 - 1); - bmp_playback_seek(time); -} diff -r f2b06f94d51e -r e4e897d20791 libaudcore/playback.h --- a/libaudcore/playback.h Sat Jan 28 09:15:54 2006 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* BMP - Cross-platform multimedia player - * Copyright (C) 2003-2004 BMP development team. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifndef PLAYBACK_H -#define PLAYBACK_H - -#include - -#include "audacious/playlist.h" - -void bmp_playback_set_random_skin(void); -gint bmp_playback_get_time(void); -void bmp_playback_initiate(void); -void bmp_playback_pause(void); -void bmp_playback_stop(void); -void bmp_playback_stop_reentrant(void); -gboolean bmp_playback_play_file(PlaylistEntry *entry); -gboolean bmp_playback_get_playing(void); -gboolean bmp_playback_get_paused(void); -void bmp_playback_seek(gint time); -void bmp_playback_seek_relative(gint offset); - -#endif