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