summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMiguel Freitas <miguelfreitas@users.sourceforge.net>2002-01-28 17:28:39 +0000
committerMiguel Freitas <miguelfreitas@users.sourceforge.net>2002-01-28 17:28:39 +0000
commitad776ce19470ab178577b13fb62adba321de0ddb (patch)
tree86244ee268682ce916545189d92f69da4199dffc /src
parent36226a2d139141325c254f3af56f0d0477695c46 (diff)
downloadxine-lib-ad776ce19470ab178577b13fb62adba321de0ddb.tar.gz
xine-lib-ad776ce19470ab178577b13fb62adba321de0ddb.tar.bz2
patches from Ewald Snel (finish metronom sync loop on xine exit, initialize
ffmpeg static data only once) CVS patchset: 1457 CVS date: 2002/01/28 17:28:39
Diffstat (limited to 'src')
-rw-r--r--src/libffmpeg/xine_decoder.c12
-rw-r--r--src/xine-engine/metronom.c5
2 files changed, 12 insertions, 5 deletions
diff --git a/src/libffmpeg/xine_decoder.c b/src/libffmpeg/xine_decoder.c
index 573719a97..c239648d6 100644
--- a/src/libffmpeg/xine_decoder.c
+++ b/src/libffmpeg/xine_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_decoder.c,v 1.24 2002/01/18 01:24:59 miguelfreitas Exp $
+ * $Id: xine_decoder.c,v 1.25 2002/01/28 17:28:39 miguelfreitas Exp $
*
* xine decoder plugin using ffmpeg
*
@@ -31,6 +31,7 @@
#include <stdio.h>
#include <inttypes.h>
#include <string.h>
+#include <pthread.h>
#include "xine_internal.h"
#include "video_out.h"
@@ -370,9 +371,15 @@ static char *ff_get_id(void) {
}
+static void init_routine(void) {
+ avcodec_init();
+ avcodec_register_all();
+}
+
video_decoder_t *init_video_decoder_plugin (int iface_version, xine_t *xine) {
ff_decoder_t *this ;
+ static pthread_once_t once_control = PTHREAD_ONCE_INIT;
if (iface_version != 5) {
printf( "ffmpeg: plugin doesn't support plugin API version %d.\n"
@@ -395,8 +402,7 @@ video_decoder_t *init_video_decoder_plugin (int iface_version, xine_t *xine) {
this->video_decoder.priority = 5;
this->size = 0;
- avcodec_init();
- avcodec_register_all();
+ pthread_once( &once_control, init_routine );
return (video_decoder_t *) this;
}
diff --git a/src/xine-engine/metronom.c b/src/xine-engine/metronom.c
index 42aaa1aa0..f2d4e2875 100644
--- a/src/xine-engine/metronom.c
+++ b/src/xine-engine/metronom.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: metronom.c,v 1.51 2002/01/15 16:37:14 miguelfreitas Exp $
+ * $Id: metronom.c,v 1.52 2002/01/28 17:28:39 miguelfreitas Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -899,7 +899,7 @@ static int metronom_sync_loop (metronom_t *this) {
scr_plugin_t** scr;
uint32_t pts;
- while (1) {
+ while (((xine_t*)this->xine)->status != XINE_QUIT) {
pts = this->scr_master->get_current(this->scr_master);
for (scr = this->scr_list; scr < this->scr_list+MAX_SCR_PROVIDERS; scr++)
@@ -907,6 +907,7 @@ static int metronom_sync_loop (metronom_t *this) {
sleep(5); /* synchronise every 5 seconds */
}
+ return 0;
}