Enlightenment CVS committal Author : rephorm Project : misc Module : eplayer
Dir : misc/eplayer/src Modified Files: callbacks.c interface.c track.c callbacks.h eplayer.h Log Message: new signals! SEEK_FORWARD_START/STOP and SEEK_BACK_START/STOP. we may need to mess with the seek speed (make it configurable? nonlinear ala edje accel?) themes need to be updated to use these. the old signals still work as before. =================================================================== RCS file: /cvsroot/enlightenment/misc/eplayer/src/callbacks.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -3 -r1.25 -r1.26 --- callbacks.c 16 Jan 2004 03:12:23 -0000 1.25 +++ callbacks.c 16 Jan 2004 05:10:55 -0000 1.26 @@ -9,12 +9,15 @@ #include "utils.h" #include "callbacks.h" +int _eplayer_seek_timer(void *data); + typedef enum { PLAYBACK_STATE_STOPPED, PLAYBACK_STATE_PAUSED, PLAYBACK_STATE_PLAYING } PlaybackState; + /*static int paused = 0;*/ static PlaybackState state = PLAYBACK_STATE_STOPPED; @@ -268,6 +271,30 @@ state = PLAYBACK_STATE_PLAYING; } +EDJE_CB(seek_forward_start) { + debug(DEBUG_LEVEL_INFO, "Start Seeking Forward"); + player->flags.seeking = 1; + player->flags.seek_dir = 1; + ecore_timer_add(.02, _eplayer_seek_timer, player); +} + +EDJE_CB(seek_forward_stop) { + debug(DEBUG_LEVEL_INFO, "Stop Seeking Forward"); + player->flags.seeking = 0; +} + +EDJE_CB(seek_backward_start) { + debug(DEBUG_LEVEL_INFO, "Start Seeking Backward"); + player->flags.seeking = 1; + player->flags.seek_dir = -1; + ecore_timer_add(.02, _eplayer_seek_timer, player); +} + +EDJE_CB(seek_backward_stop) { + debug(DEBUG_LEVEL_INFO, "Stop Seeking Backward"); + player->flags.seeking = 0; +} + EDJE_CB(eplayer_quit) { ecore_main_loop_quit(); } @@ -284,18 +311,18 @@ EDJE_CB(update_seeker) { if (!strcmp(emission, "SEEKER_START")) { - player->gui.seeking = 1; + player->flags.seeker_seeking = 1; } else if (!strcmp(emission, "SEEKER_STOP")) { - player->gui.seeking = 0; + player->flags.seeker_seeking = 0; } - if (player->gui.seeking) + if (player->flags.seeker_seeking) { + PlayListItem *pli = playlist_current_item_get(player->playlist); Evas_Coord x, y, w, h; int ex, ey; - PlayListItem *pli = playlist_current_item_get(player->playlist); double pos; if (ecore_event_current_type_get() == ECORE_X_EVENT_MOUSE_MOVE) @@ -320,12 +347,26 @@ if (pos < 0) pos = 0; if (pos > 1) pos = 1; - eplayer_playback_stop(player); - pli->plugin->set_current_pos(pli->plugin->get_duration() * pos); - - pli->current_pos = pli->duration * pos; - track_update_time(player); - - eplayer_playback_start(player, 0); + track_position_set(player, (int)(pli->duration * pos)); } } + +int +_eplayer_seek_timer(void *data) +{ + ePlayer *player = data; + PlayListItem *pli = playlist_current_item_get(player->playlist); + int new_pos; + + new_pos = pli->current_pos + player->flags.seek_dir; + + if (new_pos <= 0) new_pos = 0; + if (new_pos > pli->duration) new_pos = pli->duration; + + track_position_set(player, new_pos); + + if (player->flags.seeking) + return 1; + else + return 0; +} =================================================================== RCS file: /cvsroot/enlightenment/misc/eplayer/src/interface.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -3 -r1.32 -r1.33 --- interface.c 16 Jan 2004 03:55:55 -0000 1.32 +++ interface.c 16 Jan 2004 05:10:55 -0000 1.33 @@ -204,6 +204,14 @@ (EdjeCb) cb_seek_backward}, {"SEEK_FORWARD", "*", (EdjeCb) cb_seek_forward}, + {"SEEK_BACK_START", "*", + (EdjeCb) cb_seek_backward_start}, + {"SEEK_BACK_STOP", "*", + (EdjeCb) cb_seek_backward_stop}, + {"SEEK_FORWARD_START", "*", + (EdjeCb) cb_seek_forward_start}, + {"SEEK_FORWARD_STOP", "*", + (EdjeCb) cb_seek_forward_stop}, {"PLAY", "*", (EdjeCb) cb_play}, {"PAUSE", "*", =================================================================== RCS file: /cvsroot/enlightenment/misc/eplayer/src/track.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- track.c 16 Jan 2004 01:37:10 -0000 1.13 +++ track.c 16 Jan 2004 05:10:55 -0000 1.14 @@ -101,3 +101,21 @@ track_close(player); track_open(player); } + +/** + * Set the current track postion (time) + * + * @param position + */ +void track_position_set(ePlayer *player, int position) +{ + PlayListItem *pli = playlist_current_item_get(player->playlist); + + eplayer_playback_stop(player); + + pli->plugin->set_current_pos(position); + pli->current_pos = position; + track_update_time(player); + + eplayer_playback_start(player, 0); +} =================================================================== RCS file: /cvsroot/enlightenment/misc/eplayer/src/callbacks.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- callbacks.h 16 Jan 2004 03:30:05 -0000 1.13 +++ callbacks.h 16 Jan 2004 05:10:55 -0000 1.14 @@ -14,6 +14,11 @@ EDJE_CB(seek_forward); EDJE_CB(seek_backward); +EDJE_CB(seek_forward_start); +EDJE_CB(seek_forward_stop); +EDJE_CB(seek_backward_start); +EDJE_CB(seek_backward_stop); + EDJE_CB(track_next); EDJE_CB(track_prev); =================================================================== RCS file: /cvsroot/enlightenment/misc/eplayer/src/eplayer.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- eplayer.h 16 Jan 2004 03:30:05 -0000 1.18 +++ eplayer.h 16 Jan 2004 05:10:55 -0000 1.19 @@ -26,10 +26,15 @@ Evas_Object *edje; Evas_Object *playlist; /* playlist container */ int playlist_font_size; - int seeking; /* 1 if seeking, 0 if not */ } Gui; typedef struct { + int seeker_seeking; /* 1 if seeking, 0 if not */ + int seeking; + int seek_dir; +} Flags; + +typedef struct { const char **args; PlayList *playlist; @@ -48,6 +53,7 @@ Config cfg; Gui gui; + Flags flags; } ePlayer; void eplayer_playback_stop(ePlayer *player); ------------------------------------------------------- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs