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