summaryrefslogtreecommitdiff
path: root/plugins.c
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-04-02 20:47:54 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-04-02 20:47:54 +0200
commit43afc3b8e3cc41a41515810bd07e56e25f4d206c (patch)
tree88954da3e561d54cdac1b2331b4c470edbb6c21c /plugins.c
parentafc9d00750d37e8a1e5e0c35e3c11bab20b2282f (diff)
fixed several memleaks
Diffstat (limited to 'plugins.c')
-rw-r--r--plugins.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/plugins.c b/plugins.c
index 02dddb88..3a379a06 100644
--- a/plugins.c
+++ b/plugins.c
@@ -374,8 +374,14 @@ float
plug_playback_get_pos (void) {
playItem_t *trk = streamer_get_playing_track ();
if (!trk || trk->_duration <= 0) {
+ if (trk) {
+ pl_item_unref (trk);
+ }
return 0;
}
+ if (trk) {
+ pl_item_unref (trk);
+ }
return streamer_get_playpos () * 100 / trk->_duration;
}
@@ -383,9 +389,15 @@ void
plug_playback_set_pos (float pos) {
playItem_t *trk = streamer_get_playing_track ();
if (!trk || trk->_duration <= 0) {
+ if (trk) {
+ pl_item_unref (trk);
+ }
return;
}
float t = pos * trk->_duration / 100.f;
+ if (trk) {
+ pl_item_unref (trk);
+ }
streamer_set_seek (t);
}
@@ -416,13 +428,14 @@ plug_event_call (DB_event_t *ev) {
void
plug_trigger_event (int ev, uintptr_t param) {
DB_event_t *event;
+ playItem_t *pltrack = streamer_get_playing_track ();
switch (ev) {
case DB_EV_SONGSTARTED:
case DB_EV_SONGFINISHED:
{
DB_event_track_t *pev = alloca (sizeof (DB_event_track_t));
pev->index = -1;
- pev->track = DB_PLAYITEM (streamer_get_playing_track ());
+ pev->track = DB_PLAYITEM (pltrack);
event = DB_EVENT (pev);
}
break;
@@ -439,6 +452,9 @@ plug_trigger_event (int ev, uintptr_t param) {
}
event->event = ev;
plug_event_call (event);
+ if (pltrack) {
+ pl_item_unref (pltrack);
+ }
}
void