Enlightenment CVS committal

Author  : tsauerbeck
Project : misc
Module  : eplayer

Dir     : misc/eplayer/src


Modified Files:
        callbacks.c callbacks.h eplayer.c eplayer.h interface.c 
        vorbis.c 


Log Message:
Fixed a memory leak which was caused by not calling ao_close() in track_close(), check 
ao_default_driver_id() on startup, playlist can be scrolled using the mousewheel now
===================================================================
RCS file: /cvsroot/enlightenment/misc/eplayer/src/callbacks.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- callbacks.c 17 Oct 2003 17:00:27 -0000      1.4
+++ callbacks.c 17 Oct 2003 23:46:20 -0000      1.5
@@ -1,5 +1,6 @@
 #include <config.h>
 #include <Edje.h>
+#include <Esmart/container.h>
 #include "eplayer.h"
 #include "mixer.h"
 #include "vorbis.h"
@@ -110,3 +111,28 @@
        update_time(player);
 }
 
+/**
+ * Scrolls the playlist containers.
+ *
+ * @param player
+ * @param direction 1 (up) or -1 (down).
+ */
+static void playlist_scroll(ePlayer *player, int direction) {
+       int i, val;
+
+       for (i = 0; i < 2; i++) {
+               /* it's * 3 because we're scrolling 3 elements at once */
+               val = player->gui.playlist_font_size[i] * 3 * direction;
+               e_container_scroll(player->gui.playlist_col[i], val);
+       }
+}
+
+void cb_playlist_scroll_up(void *udata, Evas_Object *obj,
+                           const char *emission, const char *src) {
+       playlist_scroll(udata, 1);      
+}
+
+void cb_playlist_scroll_down(void *udata, Evas_Object *obj,
+                             const char *emission, const char *src) {
+       playlist_scroll(udata, -1);
+}
===================================================================
RCS file: /cvsroot/enlightenment/misc/eplayer/src/callbacks.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- callbacks.h 17 Oct 2003 17:00:28 -0000      1.2
+++ callbacks.h 17 Oct 2003 23:46:20 -0000      1.3
@@ -21,5 +21,10 @@
 void cb_volume_lower(void *udata, Evas_Object *obj,
                      const char *emission, const char *src);
 
+void cb_playlist_scroll_up(void *udata, Evas_Object *obj,
+                           const char *emission, const char *src);
+void cb_playlist_scroll_down(void *udata, Evas_Object *obj,
+                             const char *emission, const char *src);
+
 #endif
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/eplayer/src/eplayer.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- eplayer.c   17 Oct 2003 17:00:28 -0000      1.6
+++ eplayer.c   17 Oct 2003 23:46:20 -0000      1.7
@@ -7,8 +7,20 @@
 #include "interface.h"
 #include "vorbis.h"
 
+static void eplayer_free(ePlayer *player) {
+       if (!player)
+               return;
+
+       playlist_free(player->playlist);
+       mixer_free(player->mixer);
+       ao_shutdown();
+       
+       free(player);
+}
+
 static ePlayer *eplayer_new() {
        ePlayer *player;
+       int driver;
        ao_info *driver_info;
 
        if (!(player = malloc(sizeof(ePlayer))))
@@ -24,7 +36,14 @@
        player->mixer = mixer_new(MIXER_CONTROL_VOL);
 
        ao_initialize();
-       driver_info = ao_driver_info(ao_default_driver_id());
+
+       if ((driver = ao_default_driver_id()) == -1) {
+               fprintf(stderr, "AO: Can't get default driver!\n");
+               eplayer_free(player);
+               return NULL;
+       }
+       
+       driver_info = ao_driver_info(driver);
 
 #ifdef DEBUG
        printf("AO DEBUG: Audio Device: %s\n", driver_info->name);
@@ -33,17 +52,6 @@
        return player;
 }
 
-static void eplayer_free(ePlayer *player) {
-       if (!player)
-               return;
-
-       playlist_free(player->playlist);
-       mixer_free(player->mixer);
-       ao_shutdown();
-       
-       free(player);
-}
-
 /**
  * Stops playback.
  *
@@ -105,7 +113,8 @@
        }
 
        if (argc == 1) {
-               printf("eVorbisPlayer v0.7  - Usage: %s playlist.m3u [file.ogg] 
[some/dir] ...\n\n", argv[0]);
+               printf("%s v%s  - Usage: %s playlist.m3u [file.ogg] [some/dir] 
...\n\n",
+                      PACKAGE, VERSION, argv[0]);
                return 1;
        }
        
===================================================================
RCS file: /cvsroot/enlightenment/misc/eplayer/src/eplayer.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- eplayer.h   17 Oct 2003 17:00:29 -0000      1.4
+++ eplayer.h   17 Oct 2003 23:46:20 -0000      1.5
@@ -22,6 +22,8 @@
                Evas *evas;
                Evas_Object *edje;
                Evas_Object *playlist; /* playlist container */
+               Evas_Object *playlist_col[2];
+               int playlist_font_size[2]; /* 0 -> title, 1 -> length */
        } gui;
 
        TimeDisplay time_display;
===================================================================
RCS file: /cvsroot/enlightenment/misc/eplayer/src/interface.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- interface.c 17 Oct 2003 17:00:29 -0000      1.5
+++ interface.c 17 Oct 2003 23:46:20 -0000      1.6
@@ -21,12 +21,6 @@
        return 1;
 }
 
-static void window_move(Ecore_Evas *ee) {
-#ifdef DEBUG
-       printf("DEBUG: Window Move callback entered.\n");
-#endif
-}
-
 void setup_ecore(ePlayer *player) {
        double edje_w = 0, edje_h = 0;
 
@@ -45,8 +39,6 @@
        ecore_evas_shaped_set(ee, 1);
        ecore_evas_show(ee);
 
-       ecore_evas_callback_move_set(ee, window_move);
-
        player->gui.evas = ecore_evas_get(ee);
        evas_font_path_append(player->gui.evas, DATA_DIR"/themes/fonts");
 
@@ -121,7 +113,7 @@
 }
 
 void show_playlist(ePlayer *player) {
-       Evas_Object *o, *col[2];
+       Evas_Object *o;
        Evas_List *l;
        char *title, len[32];
        char *name[] = {"playlist_item_title", "playlist_item_length"};
@@ -133,7 +125,7 @@
                title = ((PlayListItem *) l->data)->title;
                duration = ((PlayListItem *) l->data)->duration;
                
-               snprintf(len, sizeof (len), "%i:%02i", (duration / 60),
+               snprintf(len, sizeof(len), "%i:%02i", (duration / 60),
                         duration % 60);
                
                /* add the title/length items to the container */
@@ -150,17 +142,42 @@
                         */
                        if (!added_cols) {
                                evas_object_geometry_get(player->gui.playlist, NULL, 
NULL, NULL, &h);
-                               col[i] = playlist_column_add(player, w, h,
-                                                            i ? CONTAINER_ALIGN_RIGHT
-                                                            : CONTAINER_ALIGN_LEFT);
-                               e_container_element_append(player->gui.playlist, 
col[i]);
+
+                               player->gui.playlist_col[i] = 
+                                       playlist_column_add(player, w, h,
+                                                       i ? CONTAINER_ALIGN_RIGHT
+                                                       : CONTAINER_ALIGN_LEFT);
+                               e_container_element_append(player->gui.playlist,
+                                                          
player->gui.playlist_col[i]);
                        }
 
-                       e_container_element_append(col[i], o);
+                       e_container_element_append(player->gui.playlist_col[i], o);
+               
+                       /* add playlist callbacks */
+                       edje_object_signal_callback_add(o,
+                                                       "PLAYLIST_SCROLL_UP", "text",
+                                                       cb_playlist_scroll_up,
+                                                       player);
+                       edje_object_signal_callback_add(o,
+                                                       "PLAYLIST_SCROLL_DOWN", "text",
+                                                       cb_playlist_scroll_down,
+                                                       player);
+
+                       /* FIXME: we're assuming that the objects minimal height
+                        * equals the text size
+                        */
+                       player->gui.playlist_font_size[i] = h;
                }
 
                added_cols = 1;
        }
+       
+       edje_object_signal_callback_add(player->gui.edje,
+                                       "PLAYLIST_SCROLL_DOWN", "playlist",
+                                       cb_playlist_scroll_down, player);
+       edje_object_signal_callback_add(player->gui.edje,
+                                       "PLAYLIST_SCROLL_UP", "playlist",
+                                       cb_playlist_scroll_up, player);
 }
 
 void refresh_volume(ePlayer *player, int read) {
===================================================================
RCS file: /cvsroot/enlightenment/misc/eplayer/src/vorbis.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- vorbis.c    17 Oct 2003 17:00:30 -0000      1.7
+++ vorbis.c    17 Oct 2003 23:46:20 -0000      1.8
@@ -85,6 +85,7 @@
  * @param player
  */
 void track_close(ePlayer *player) {
+       ao_close(player->ao_dev);
        ov_clear(&player->current_track);
 }
 




-------------------------------------------------------
This SF.net email sponsored by: Enterprise Linux Forum Conference & Expo
The Event For Linux Datacenter Solutions & Strategies in The Enterprise 
Linux in the Boardroom; in the Front Office; & in the Server Room 
http://www.enterpriselinuxforum.com
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to