Enlightenment CVS committal
Author : tsauerbeck
Project : misc
Module : eplayer
Dir : misc/eplayer/src
Modified Files:
callbacks.c playlist.c playlist.h track.c
Log Message:
Playlist API changes.
===================================================================
RCS file: /cvsroot/enlightenment/misc/eplayer/src/callbacks.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- callbacks.c 18 Nov 2003 17:58:54 -0000 1.16
+++ callbacks.c 23 Nov 2003 19:13:17 -0000 1.17
@@ -59,20 +59,15 @@
*/
void cb_track_next(ePlayer *player, Evas *e, Evas_Object *o,
void *event) {
- int play = 0;
+ int play = 1;
debug(DEBUG_LEVEL_INFO, "Next File Called\n");
eplayer_playback_stop(player);
- if (player->playlist->cur_item->next) {
- player->playlist->cur_item = player->playlist->cur_item->next;
- play = 1;
- } else {
- /* there's no next item, so move to the beginning again */
- player->playlist->cur_item = player->playlist->items;
+ /* check whether we moved to the beginning of the list */
+ if (playlist_current_item_next(player->playlist))
play = player->cfg.repeat;
- }
if (play) {
eplayer_playback_start(player, 1);
@@ -95,13 +90,13 @@
debug(DEBUG_LEVEL_INFO, "Previous File Called\n");
/* first item on the list: do nothing */
- if (!player->playlist->cur_item->prev)
+ if (!playlist_current_item_has_prev(player->playlist))
return;
eplayer_playback_stop(player);
/* Get the previous list item */
- player->playlist->cur_item = player->playlist->cur_item->prev;
+ playlist_current_item_prev(player->playlist);
eplayer_playback_start(player, 1);
paused = 0;
@@ -166,13 +161,10 @@
const char *emission, const char *src) {
ePlayer *player = udata;
PlayListItem *pli = evas_object_data_get(obj, "PlayListItem");
- Evas_List *item = evas_list_find_list(player->playlist->items, pli);
- assert(item);
-
eplayer_playback_stop(player);
- player->playlist->cur_item = item;
+ playlist_current_item_set(player->playlist, pli);
eplayer_playback_start(player, 1);
paused = 0;
}
@@ -192,7 +184,7 @@
void cb_seek_forward(void *udata, Evas_Object *obj,
const char *emission, const char *src) {
ePlayer *player = udata;
- PlayListItem *pli = player->playlist->cur_item->data;
+ PlayListItem *pli = playlist_current_item_get(player->playlist);
debug(DEBUG_LEVEL_INFO, "Seeking forward\n");
@@ -208,8 +200,8 @@
void cb_seek_backward(void *udata, Evas_Object *obj,
const char *emission, const char *src) {
ePlayer *player = udata;
- PlayListItem *pli = player->playlist->cur_item->data;
- int cur_time = pli->plugin->get_current_pos();
+ PlayListItem *pli = playlist_current_item_get(player->playlist);
+ int cur_time = pli->plugin->get_current_pos();
debug(DEBUG_LEVEL_INFO, "Seeking backward - Current Pos: %i\n",
cur_time);
===================================================================
RCS file: /cvsroot/enlightenment/misc/eplayer/src/playlist.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- playlist.c 17 Nov 2003 21:03:10 -0000 1.11
+++ playlist.c 23 Nov 2003 19:13:17 -0000 1.12
@@ -31,8 +31,11 @@
* @param pli
*/
void playlist_item_free(PlayListItem *pli) {
- if (pli)
- free(pli);
+ if (!pli)
+ return;
+
+ pthread_mutex_destroy(&pli->pos_mutex);
+ free(pli);
}
/**
@@ -51,6 +54,8 @@
memset(pli, 0, sizeof(PlayListItem));
+ pthread_mutex_init(&pli->pos_mutex, NULL);
+
/* find the plugin for this file */
for (l = plugins; l; l = l->next) {
ip = l->data;
@@ -114,6 +119,58 @@
playlist_item_free((PlayListItem *) pl->items->data);
pl->items = evas_list_remove(pl->items, pl->items->data);
}
+}
+
+PlayListItem *playlist_current_item_get(PlayList *pl) {
+ return pl ? pl->cur_item->data : NULL;
+}
+
+void playlist_current_item_set(PlayList *pl, PlayListItem *pli) {
+ if (!pl)
+ return;
+
+ if (!pli) /* move to the beginning */
+ pl->cur_item = pl->items;
+ else
+ pl->cur_item = evas_list_find_list(pl->items, pli);
+}
+
+int playlist_current_item_has_next(PlayList *pl) {
+ return pl ? !!pl->cur_item->next : 0;
+}
+
+int playlist_current_item_has_prev(PlayList *pl) {
+ return pl ? !!pl->cur_item->prev : 0;
+}
+
+/**
+ * Moves the current item of a PlayList to the next item.
+ *
+ * @param pl
+ * return 1 if the current item has been set to the beginning, else 0
+ */
+int playlist_current_item_next(PlayList *pl) {
+ if (!pl)
+ return 0;
+
+ if (pl->cur_item->next) {
+ pl->cur_item = pl->cur_item->next;
+ return 0;
+ } else { /* move to the beginning */
+ pl->cur_item = pl->items;
+ return 1;
+ }
+}
+
+int playlist_current_item_prev(PlayList *pl) {
+ if (!pl)
+ return 0;
+
+ if (playlist_current_item_has_prev(pl)) {
+ pl->cur_item = pl->cur_item->prev;
+ return 1;
+ } else
+ return 0;
}
/**
===================================================================
RCS file: /cvsroot/enlightenment/misc/eplayer/src/playlist.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- playlist.h 14 Nov 2003 16:40:19 -0000 1.6
+++ playlist.h 23 Nov 2003 19:13:17 -0000 1.7
@@ -50,6 +50,15 @@
void playlist_remove_all(PlayList *pl);
+PlayListItem *playlist_current_item_get(PlayList *pl);
+void playlist_current_item_set(PlayList *pl, PlayListItem *pli);
+
+int playlist_current_item_prev(PlayList *pl);
+int playlist_current_item_next(PlayList *pl);
+
+int playlist_current_item_has_prev(PlayList *pl);
+int playlist_current_item_has_next(PlayList *pl);
+
#ifdef __cplusplus
}
#endif
===================================================================
RCS file: /cvsroot/enlightenment/misc/eplayer/src/track.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- track.c 14 Nov 2003 20:16:28 -0000 1.7
+++ track.c 23 Nov 2003 19:13:17 -0000 1.8
@@ -12,7 +12,7 @@
*/
void track_play_chunk(void *udata) {
ePlayer *player = udata;
- PlayListItem *pli = player->playlist->cur_item->data;
+ PlayListItem *pli = playlist_current_item_get(player->playlist);
int read;
unsigned char *buf = NULL;
@@ -32,7 +32,7 @@
int track_update_time(void *udata) {
ePlayer *player = udata;
- PlayListItem *current_item = player->playlist->cur_item->data;
+ PlayListItem *current_item = playlist_current_item_get(player->playlist);
static int old_time = -1;
int cur_time;
@@ -58,10 +58,8 @@
void track_close(ePlayer *player) {
PlayListItem *pli;
- if (player->playlist && player->playlist->cur_item) {
- pli = player->playlist->cur_item->data;
+ if ((pli = playlist_current_item_get(player->playlist)))
pli->plugin->close();
- }
}
/**
@@ -70,12 +68,11 @@
* @param player
*/
void track_open(ePlayer *player) {
- PlayListItem *pli;
+ PlayListItem *pli = playlist_current_item_get(player->playlist);
- assert(player->playlist->cur_item);
- pli = player->playlist->cur_item->data;
- pli->current_pos = 0;
+ assert(pli);
+ pli->current_pos = 0;
pli->plugin->open(pli->file);
edje_object_part_text_set(player->gui.edje, "song_name",
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs