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

Reply via email to