summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/audio_out/Makefile.am2
-rw-r--r--src/input/Makefile.am18
-rw-r--r--src/input/input_cdda.c6
-rw-r--r--src/input/input_dvb.c7
-rw-r--r--src/input/input_dvd.c5
-rw-r--r--src/input/input_file.c6
-rw-r--r--src/input/input_pvr.c5
-rw-r--r--src/input/mmsh.c6
-rw-r--r--src/libffmpeg/Makefile.am2
-rw-r--r--src/libffmpeg/dvaudio_decoder.c5
-rw-r--r--src/libspudec/Makefile.am4
-rw-r--r--src/libspudvb/Makefile.am2
-rw-r--r--src/post/audio/Makefile.am2
-rw-r--r--src/post/goom/Makefile.am2
-rw-r--r--src/post/goom/diff_against_release.patch13
-rw-r--r--src/post/goom/filters.c4
-rw-r--r--src/post/mosaico/Makefile.am4
-rw-r--r--src/post/planar/Makefile.am11
-rw-r--r--src/post/visualizations/Makefile.am2
-rwxr-xr-xsrc/video_out/video_out_directx.c54
-rw-r--r--src/xine-engine/Makefile.am13
-rw-r--r--src/xine-engine/audio_decoder.c14
-rw-r--r--src/xine-engine/audio_out.c10
-rw-r--r--src/xine-engine/demux.c19
-rw-r--r--src/xine-engine/load_plugins.c13
-rw-r--r--src/xine-engine/osd.c4
-rw-r--r--src/xine-engine/video_decoder.c12
-rw-r--r--src/xine-engine/xine.c6
-rw-r--r--src/xine-engine/xine_internal.h7
-rw-r--r--src/xine-utils/xineutils.h8
30 files changed, 157 insertions, 109 deletions
diff --git a/src/audio_out/Makefile.am b/src/audio_out/Makefile.am
index 5206e805f..745aac962 100644
--- a/src/audio_out/Makefile.am
+++ b/src/audio_out/Makefile.am
@@ -123,5 +123,5 @@ xineplug_ao_out_polypaudio_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_
xineplug_ao_out_directx2_la_SOURCES = audio_directx2_out.c
xineplug_ao_out_directx2_la_CPPFLAGS = $(DIRECTX_CPPFLAGS)
-xineplug_ao_out_directx2_la_LIBADD = $(XINE_LIB) $(DIRECTX_AUDIO_LIBS)
+xineplug_ao_out_directx2_la_LIBADD = $(XINE_LIB) $(DIRECTX_AUDIO_LIBS) $(THREAD_LIBS)
xineplug_ao_out_directx2_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
diff --git a/src/input/Makefile.am b/src/input/Makefile.am
index 071381a67..ff4595f4d 100644
--- a/src/input/Makefile.am
+++ b/src/input/Makefile.am
@@ -80,11 +80,11 @@ xineplug_inp_dvd_la_LIBADD = $(XINE_LIB) $(link_dvdnav)
xineplug_inp_dvd_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_net_la_SOURCES = input_net.c net_buf_ctrl.c
-xineplug_inp_net_la_LIBADD = $(XINE_LIB)
+xineplug_inp_net_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
xineplug_inp_net_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_mms_la_SOURCES = input_mms.c net_buf_ctrl.c mms.c mmsh.c http_helper.c
-xineplug_inp_mms_la_LIBADD = $(XINE_LIB) @LIBICONV@
+xineplug_inp_mms_la_LIBADD = $(XINE_LIB) @LIBICONV@ $(THREAD_LIBS)
xineplug_inp_mms_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_vcdo_la_SOURCES = input_vcd.c media_helper.c
@@ -92,27 +92,27 @@ xineplug_inp_vcdo_la_LIBADD = $(XINE_LIB)
xineplug_inp_vcdo_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_stdin_fifo_la_SOURCES = input_stdin_fifo.c net_buf_ctrl.c
-xineplug_inp_stdin_fifo_la_LIBADD = $(XINE_LIB)
+xineplug_inp_stdin_fifo_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
xineplug_inp_stdin_fifo_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_rtp_la_SOURCES = input_rtp.c net_buf_ctrl.c
-xineplug_inp_rtp_la_LIBADD = $(XINE_LIB)
+xineplug_inp_rtp_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
xineplug_inp_rtp_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_http_la_SOURCES = input_http.c net_buf_ctrl.c http_helper.c
-xineplug_inp_http_la_LIBADD = $(XINE_LIB)
+xineplug_inp_http_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
xineplug_inp_http_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_pnm_la_SOURCES = input_pnm.c net_buf_ctrl.c pnm.c
-xineplug_inp_pnm_la_LIBADD = $(XINE_LIB)
+xineplug_inp_pnm_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
xineplug_inp_pnm_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_dvb_la_SOURCES = input_dvb.c net_buf_ctrl.c
-xineplug_inp_dvb_la_LIBADD = $(XINE_LIB)
+xineplug_inp_dvb_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
xineplug_inp_dvb_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_rtsp_la_SOURCES = input_rtsp.c net_buf_ctrl.c
-xineplug_inp_rtsp_la_LIBADD = $(XINE_LIB) libreal/libreal.la librtsp/librtsp.la
+xineplug_inp_rtsp_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS) libreal/libreal.la librtsp/librtsp.la
xineplug_inp_rtsp_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_cdda_la_SOURCES = input_cdda.c media_helper.c sha1.c sha1.h base64.c base64.h
@@ -124,7 +124,7 @@ xineplug_inp_v4l_la_LIBADD = $(ALSA_LIBS) $(XINE_LIB)
xineplug_inp_v4l_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_gnome_vfs_la_SOURCES = input_gnome_vfs.c net_buf_ctrl.c
-xineplug_inp_gnome_vfs_la_LIBADD = $(GNOME_VFS_LIBS) $(XINE_LIB)
+xineplug_inp_gnome_vfs_la_LIBADD = $(GNOME_VFS_LIBS) $(XINE_LIB) $(THREAD_LIBS)
xineplug_inp_gnome_vfs_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_inp_smb_la_SOURCES = input_smb.c
diff --git a/src/input/input_cdda.c b/src/input/input_cdda.c
index dcf6e18db..2366225c9 100644
--- a/src/input/input_cdda.c
+++ b/src/input/input_cdda.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -20,7 +20,7 @@
* Compact Disc Digital Audio (CDDA) Input Plugin
* by Mike Melanson (melanson@pcisys.net)
*
- * $Id: input_cdda.c,v 1.73 2005/07/29 19:03:34 jstembridge Exp $
+ * $Id: input_cdda.c,v 1.74 2005/08/25 15:36:29 valtri Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -33,7 +33,9 @@
#include <sys/types.h>
#include <sys/param.h>
+#ifdef HAVE_DIRENT_H
#include <dirent.h>
+#endif
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
diff --git a/src/input/input_dvb.c b/src/input/input_dvb.c
index 7f45d3ab8..f76207671 100644
--- a/src/input/input_dvb.c
+++ b/src/input/input_dvb.c
@@ -88,7 +88,9 @@
#endif
#include <sys/poll.h>
#include <time.h>
+#ifdef HAVE_DIRENT_H
#include <dirent.h>
+#endif
#include <ctype.h>
/* These will eventually be #include <linux/dvb/...> */
@@ -2098,6 +2100,8 @@ static void do_record (dvb_input_plugin_t *this) {
char dates[64];
int x=0;
xine_cfg_entry_t savedir;
+ DIR *dir;
+
if (this->record_fd > -1) {
/* stop recording */
@@ -2120,10 +2124,11 @@ static void do_record (dvb_input_plugin_t *this) {
if (xine_config_lookup_entry(this->stream->xine, "media.capture.save_dir", &savedir)){
if(strlen(savedir.str_value)>1){
- if(opendir(savedir.str_value)==NULL){
+ if((dir = opendir(savedir.str_value))==NULL){
snprintf (filename, 256, "%s/%s_%s.ts",xine_get_homedir(),this->channels[this->channel].name, dates);
xprintf(this->class->xine,XINE_VERBOSITY_LOG,"savedir is wrong... saving to home directory\n");
} else {
+ closedir(dir);
snprintf (filename, 256, "%s/%s_%s.ts",savedir.str_value,this->channels[this->channel].name, dates);
xprintf(this->class->xine,XINE_VERBOSITY_LOG,"saving to savedir\n");
}
diff --git a/src/input/input_dvd.c b/src/input/input_dvd.c
index 52fab4623..527e5a098 100644
--- a/src/input/input_dvd.c
+++ b/src/input/input_dvd.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project,
+ * Copyright (C) 2000-2005 the xine project,
* Rich Wareham <richwareham@users.sourceforge.net>
*
* This file is part of xine, a free video player.
@@ -18,7 +18,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: input_dvd.c,v 1.201 2005/07/11 11:35:41 hadess Exp $
+ * $Id: input_dvd.c,v 1.202 2005/08/25 15:36:29 valtri Exp $
*
*/
@@ -47,7 +47,6 @@
#include <sys/types.h>
#include <sys/stat.h>
-#include <dirent.h>
#include <unistd.h>
#include <fcntl.h>
diff --git a/src/input/input_file.c b/src/input/input_file.c
index 90efb46dc..252bf4b50 100644
--- a/src/input/input_file.c
+++ b/src/input/input_file.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2003 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -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: input_file.c,v 1.102 2005/06/21 09:59:49 hadess Exp $
+ * $Id: input_file.c,v 1.103 2005/08/25 15:36:29 valtri Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -26,7 +26,9 @@
#include <stdio.h>
#include <stdlib.h>
+#ifdef HAVE_DIRENT_H
#include <dirent.h>
+#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
diff --git a/src/input/input_pvr.c b/src/input/input_pvr.c
index 2b04a3365..545f23777 100644
--- a/src/input/input_pvr.c
+++ b/src/input/input_pvr.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project
+ * Copyright (C) 2000-2005 the xine project
* March 2003 - Miguel Freitas
* This plugin was sponsored by 1Control
*
@@ -38,7 +38,7 @@
* usage:
* xine pvr:/<prefix_to_tmp_files>\!<prefix_to_saved_files>\!<max_page_age>
*
- * $Id: input_pvr.c,v 1.54 2005/02/07 23:58:58 tmattern Exp $
+ * $Id: input_pvr.c,v 1.55 2005/08/25 15:36:29 valtri Exp $
*/
/**************************************************************************
@@ -91,7 +91,6 @@
#include <stdio.h>
#include <stdlib.h>
-#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
diff --git a/src/input/mmsh.c b/src/input/mmsh.c
index 62aff01a5..2e2e306ca 100644
--- a/src/input/mmsh.c
+++ b/src/input/mmsh.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: mmsh.c,v 1.34 2005/01/12 00:05:38 tmattern Exp $
+ * $Id: mmsh.c,v 1.35 2005/08/25 15:36:29 valtri Exp $
*
* MMS over HTTP protocol
* written by Thibaut Mattern
@@ -492,8 +492,8 @@ static void interp_header (mmsh_t *this) {
this->packet_length = LE_32(this->asf_header + i + 92 - 24);
this->file_length = LE_64(this->asf_header + i + 40 - 24);
- lprintf ("file object, file_length = %lld, packet length = %d",
- this->file_length, this->packet_count);
+ /*lprintf ("file object, file_length = %lld, packet length = %d",
+ this->file_length, this->packet_count);*/
break;
case GUID_ASF_STREAM_PROPERTIES:
diff --git a/src/libffmpeg/Makefile.am b/src/libffmpeg/Makefile.am
index cf1ec66e8..5927fbebc 100644
--- a/src/libffmpeg/Makefile.am
+++ b/src/libffmpeg/Makefile.am
@@ -35,7 +35,7 @@ xineplug_decode_ff_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
endif
xineplug_decode_ff_la_LIBADD = $(MLIB_LIBS) $(XINE_LIB) -lm $(ZLIB_LIBS) \
- $(link_ffmpeg)
+ $(link_ffmpeg) $(THREAD_LIBS)
xineplug_decode_dvaudio_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_decode_dvaudio_la_SOURCES = dvaudio_decoder.c
diff --git a/src/libffmpeg/dvaudio_decoder.c b/src/libffmpeg/dvaudio_decoder.c
index af2c95db9..2ad4b6c5c 100644
--- a/src/libffmpeg/dvaudio_decoder.c
+++ b/src/libffmpeg/dvaudio_decoder.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004 the xine project
+ * Copyright (C) 2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -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: dvaudio_decoder.c,v 1.6 2004/12/16 13:58:57 mroi Exp $
+ * $Id: dvaudio_decoder.c,v 1.7 2005/08/25 15:36:30 valtri Exp $
*
* dv audio decoder based on patch by Dan Dennedy <dan@dennedy.org>
*
@@ -31,7 +31,6 @@
#include <stdio.h>
#include <inttypes.h>
#include <string.h>
-#include <pthread.h>
#include <math.h>
#define LOG_MODULE "dvaudio"
diff --git a/src/libspudec/Makefile.am b/src/libspudec/Makefile.am
index 749d99709..c106e23e4 100644
--- a/src/libspudec/Makefile.am
+++ b/src/libspudec/Makefile.am
@@ -10,7 +10,7 @@ xineplug_decode_spu_la_SOURCES = \
spu.c \
xine_decoder.c
AM_CPPFLAGS = $(DVDNAV_CFLAGS)
-xineplug_decode_spu_la_LIBADD = $(XINE_LIB) $(DVDNAV_LIBS)
+xineplug_decode_spu_la_LIBADD = $(XINE_LIB) $(DVDNAV_LIBS) $(THREAD_LIBS)
else
@@ -19,7 +19,7 @@ xineplug_decode_spu_la_SOURCES = \
spu.c \
xine_decoder.c
AM_CPPFLAGS = -I$(top_srcdir)/src/input/libdvdnav
-xineplug_decode_spu_la_LIBADD = $(XINE_LIB)
+xineplug_decode_spu_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
endif
diff --git a/src/libspudvb/Makefile.am b/src/libspudvb/Makefile.am
index c7b4b804e..c4fe664d5 100644
--- a/src/libspudvb/Makefile.am
+++ b/src/libspudvb/Makefile.am
@@ -5,5 +5,5 @@ libdir = $(XINE_PLUGINDIR)
lib_LTLIBRARIES = xineplug_decode_spudvb.la
xineplug_decode_spudvb_la_SOURCES = xine_decoder.c
-xineplug_decode_spudvb_la_LIBADD = $(XINE_LIB)
+xineplug_decode_spudvb_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
xineplug_decode_spudvb_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
diff --git a/src/post/audio/Makefile.am b/src/post/audio/Makefile.am
index a7dbe64bf..44d2af31a 100644
--- a/src/post/audio/Makefile.am
+++ b/src/post/audio/Makefile.am
@@ -8,6 +8,6 @@ lib_LTLIBRARIES = xineplug_post_audio_filters.la
xineplug_post_audio_filters_la_SOURCES = \
upmix.c upmix_mono.c filter.c window.c stretch.c audio_filters.c
-xineplug_post_audio_filters_la_LIBADD = $(XINE_LIB)
+xineplug_post_audio_filters_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
xineplug_post_audio_filters_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@ -lm
diff --git a/src/post/goom/Makefile.am b/src/post/goom/Makefile.am
index 285f458fe..85d6c165e 100644
--- a/src/post/goom/Makefile.am
+++ b/src/post/goom/Makefile.am
@@ -25,7 +25,7 @@ xineplug_post_goom_la_SOURCES = $(extra_files) xine_goom.c \
gfontlib.c gfontrle.c goom_core.c goom_tools.c goomsl.c goomsl_hash.c goomsl_heap.c \
goomsl_lex.c goomsl_yacc.c graphic.c ifs.c lines.c mathtools.c \
plugin_info.c sound_tester.c surf3d.c tentacle3d.c v3d.c
-xineplug_post_goom_la_LIBADD = $(XINE_LIB) $(GOOM_LIBS)
+xineplug_post_goom_la_LIBADD = $(XINE_LIB) $(GOOM_LIBS) $(THREAD_LIBS)
xineplug_post_goom_la_LDFLAGS = -avoid-version -module $(XINE_PLUGIN_MIN_SYMS)
noinst_HEADERS = cpu_info.h default_scripts.h drawmethods.h gfontlib.h gfontrle.h goom.h \
diff --git a/src/post/goom/diff_against_release.patch b/src/post/goom/diff_against_release.patch
index 7f40e7c2a..4fc5bd972 100644
--- a/src/post/goom/diff_against_release.patch
+++ b/src/post/goom/diff_against_release.patch
@@ -345,3 +345,16 @@ diff -u -p -r1.13 goom_core.c
*param1 = goomInfo->screen.width / 7.0f;
*param2 = 6.0f * goomInfo->screen.width / 7.0f;
}
+--- post/goom/filters.c.orig 2005-08-20 12:29:12.000000000 +0200
++++ post/goom/filters.c 2005-08-20 12:28:25.000000000 +0200
+@@ -201,8 +201,8 @@ static inline v2g zoomVector(ZoomFilterF
+ /* Noise */
+ if (data->noisify)
+ {
+- vx += (((float)random()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
+- vy += (((float)random()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
++ vx += (((float)rand()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
++ vy += (((float)rand()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
+ }
+
+ /* Hypercos */
diff --git a/src/post/goom/filters.c b/src/post/goom/filters.c
index 86bfdbde7..26cb0e54c 100644
--- a/src/post/goom/filters.c
+++ b/src/post/goom/filters.c
@@ -201,8 +201,8 @@ static inline v2g zoomVector(ZoomFilterFXWrapperData *data, float X, float Y)
/* Noise */
if (data->noisify)
{
- vx += (((float)random()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
- vy += (((float)random()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
+ vx += (((float)rand()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
+ vy += (((float)rand()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
}
/* Hypercos */
diff --git a/src/post/mosaico/Makefile.am b/src/post/mosaico/Makefile.am
index 835723364..2f3a9bc8a 100644
--- a/src/post/mosaico/Makefile.am
+++ b/src/post/mosaico/Makefile.am
@@ -5,9 +5,9 @@ libdir = $(XINE_PLUGINDIR)/post
lib_LTLIBRARIES = xineplug_post_mosaico.la xineplug_post_switch.la
xineplug_post_mosaico_la_SOURCES = mosaico.c
-xineplug_post_mosaico_la_LIBADD = $(XINE_LIB)
+xineplug_post_mosaico_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
xineplug_post_mosaico_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
xineplug_post_switch_la_SOURCES = switch.c
-xineplug_post_switch_la_LIBADD = $(XINE_LIB)
+xineplug_post_switch_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
xineplug_post_switch_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
diff --git a/src/post/planar/Makefile.am b/src/post/planar/Makefile.am
index 5eeae5a58..f0c512228 100644
--- a/src/post/planar/Makefile.am
+++ b/src/post/planar/Makefile.am
@@ -1,7 +1,12 @@
include $(top_srcdir)/misc/Makefile.common
AM_CFLAGS = -I$(top_srcdir)/src/libffmpeg/libavcodec/libpostproc
-POSTPROC_LIB = $(top_builddir)/src/libffmpeg/libavcodec/libpostproc/libpostprocess.la
+if HAVE_FFMPEG
+POSTPROC_LIB = $(FFMPEG_POSTPROC_LIBS)
+else
+POSTPROC_LIB = $(top_builddir)/src/libffmpeg/libavcodec/libpostproc/libpostprocess.la
+POSTPROC_DEP = $(POSTPROC_LIB)
+endif
libdir = $(XINE_PLUGINDIR)/post
@@ -9,8 +14,8 @@ lib_LTLIBRARIES = xineplug_post_planar.la
xineplug_post_planar_la_SOURCES = planar.c invert.c expand.c fill.c boxblur.c \
denoise3d.c eq.c eq2.c unsharp.c pp.c
-xineplug_post_planar_la_DEPENDENCIES = $(POSTPROC_LIB)
-xineplug_post_planar_la_LIBADD = $(XINE_LIB) $(POSTPROC_LIB) -lm
+xineplug_post_planar_la_DEPENDENCIES = $(POSTPROC_DEP)
+xineplug_post_planar_la_LIBADD = $(XINE_LIB) $(POSTPROC_LIB) -lm $(THREAD_LIBS)
xineplug_post_planar_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@
$(POSTPROC_LIB):
diff --git a/src/post/visualizations/Makefile.am b/src/post/visualizations/Makefile.am
index ba79640fe..055d0eb32 100644
--- a/src/post/visualizations/Makefile.am
+++ b/src/post/visualizations/Makefile.am
@@ -8,7 +8,7 @@ lib_LTLIBRARIES = xineplug_post_visualizations.la
xineplug_post_visualizations_la_SOURCES = \
visualizations.c fft.c fftscope.c oscope.c fftgraph.c
-xineplug_post_visualizations_la_LIBADD = $(XINE_LIB)
+xineplug_post_visualizations_la_LIBADD = $(XINE_LIB) $(THREAD_LIBS)
xineplug_post_visualizations_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@ -lm
noinst_HEADERS = fft.h visualizations.h
diff --git a/src/video_out/video_out_directx.c b/src/video_out/video_out_directx.c
index 524d29a21..5827ad27c 100755
--- a/src/video_out/video_out_directx.c
+++ b/src/video_out/video_out_directx.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2003 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a unix video player.
*
@@ -20,7 +20,7 @@
* video_out_directx.c, direct draw video output plugin for xine
* by Matthew Grooms <elon@altavista.com>
*
- * $Id: video_out_directx.c,v 1.21 2004/12/01 07:23:55 athp Exp $
+ * $Id: video_out_directx.c,v 1.22 2005/08/25 15:36:30 valtri Exp $
*/
typedef unsigned char boolean;
@@ -174,7 +174,7 @@ void UpdateRect( win32_visual_t * win32_visual )
boolean CreatePrimary( win32_driver_t * win32_driver )
{
- LPDIRECTDRAW ddobj;
+ LPDIRECTDRAW4 ddobj;
DDSURFACEDESC2 ddsd;
HRESULT result;
@@ -193,7 +193,7 @@ boolean CreatePrimary( win32_driver_t * win32_driver )
result = IDirectDraw_SetCooperativeLevel( ddobj, win32_driver->win32_visual->WndHnd, DDSCL_NORMAL );
if( result != DD_OK )
{
- Error( 0, "SetCooperativeLevel : error %i", result );
+ Error( 0, "SetCooperativeLevel : error 0x%lx", result );
return 0;
}
@@ -220,7 +220,7 @@ boolean CreatePrimary( win32_driver_t * win32_driver )
result = IDirectDraw4_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->primary, 0 );
if( result != DD_OK )
{
- Error( 0, "CreateSurface ( primary ) : error %i ", result );
+ Error( 0, "CreateSurface ( primary ) : error 0x%lx", result );
return 0;
}
@@ -229,7 +229,7 @@ boolean CreatePrimary( win32_driver_t * win32_driver )
result = IDirectDraw4_CreateClipper( win32_driver->ddobj, 0, &win32_driver->ddclipper, 0 );
if( result != DD_OK )
{
- Error( 0, "CreateClipper : error %i", result );
+ Error( 0, "CreateClipper : error 0x%lx", result );
return 0;
}
@@ -238,7 +238,7 @@ boolean CreatePrimary( win32_driver_t * win32_driver )
result = IDirectDrawClipper_SetHWnd( win32_driver->ddclipper, 0, win32_driver->win32_visual->WndHnd );
if( result != DD_OK )
{
- Error( 0, "ddclipper->SetHWnd : error %i", result );
+ Error( 0, "ddclipper->SetHWnd : error 0x%lx", result );
return 0;
}
@@ -247,7 +247,7 @@ boolean CreatePrimary( win32_driver_t * win32_driver )
result = IDirectDrawSurface4_SetClipper( win32_driver->primary, win32_driver->ddclipper );
if( result != DD_OK )
{
- Error( 0, "ddclipper->SetHWnd : error %i", result );
+ Error( 0, "ddclipper->SetHWnd : error 0x%lx", result );
return 0;
}
@@ -373,15 +373,16 @@ boolean CreateSecondary( win32_driver_t * win32_driver, int width, int height, i
win32_driver->act_format = IMGFMT_NATIVE;
- if( IDirectDraw4_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->secondary, 0 ) == DD_OK )
- return TRUE;
+ if( IDirectDraw4_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->secondary, 0 ) != DD_OK ) {
+ /* This is bad. We cant even create a surface with
+ * the same format as the primary surface. */
- /* This is bad. We cant even create a surface with
- * the same format as the primary surface. */
+ Error( 0, "CreateSurface ( Secondary ) : unable to create a suitable rendering surface" );
- Error( 0, "CreateSurface ( Secondary ) : unable to create a suitable rendering surface" );
+ return FALSE;
+ }
- return FALSE;
+ return TRUE;
}
/* Destroy all direct draw driver allocated
@@ -423,7 +424,7 @@ boolean CheckPixelFormat( win32_driver_t * win32_driver )
result = IDirectDrawSurface4_GetPixelFormat( win32_driver->primary, &ddpf );
if( result != DD_OK )
{
- Error( 0, "IDirectDrawSurface4_GetPixelFormat ( CheckPixelFormat ) : error %u", result );
+ Error( 0, "IDirectDrawSurface4_GetPixelFormat ( CheckPixelFormat ) : error 0x%lx", result );
return 0;
}
@@ -597,7 +598,7 @@ boolean Overlay( LPDIRECTDRAWSURFACE4 src_surface, RECT * src_rect,
}
else
{
- Error( 0, "IDirectDrawSurface4_UpdateOverlay : error %i", result );
+ Error( 0, "IDirectDrawSurface4_UpdateOverlay : error 0x%lx", result );
return FALSE;
}
}
@@ -633,7 +634,7 @@ boolean BltCopy( LPDIRECTDRAWSURFACE4 src_surface, RECT * src_rect,
}
else
{
- Error( 0, "IDirectDrawSurface4_Blt : error %i", result );
+ Error( 0, "IDirectDrawSurface4_Blt : error 0x%lx", result );
return FALSE;
}
}
@@ -784,8 +785,6 @@ void * Lock( void * surface )
}
return ddsd.lpSurface;
-
- return 0;
}
/* Unlock our back buffer to prepair for display. */
@@ -885,6 +884,7 @@ static void win32_update_frame_format( vo_driver_t * vo_driver, vo_frame_t * vo_
/*printf("vo_out_directx : win32_update_frame_format() - width = %d, height=%d, ratio_code=%d, format=%d, flags=%d\n", width, height, ratio_code, format, flags);*/
+
if( ( win32_frame->format != format ) ||
( win32_frame->width != width ) ||
( win32_frame->height != height ) )
@@ -936,6 +936,7 @@ static void win32_update_frame_format( vo_driver_t * vo_driver, vo_frame_t * vo_
win32_frame->height = height;
win32_frame->ratio = ratio;
}
+
}
static void win32_display_frame( vo_driver_t * vo_driver, vo_frame_t * vo_frame )
@@ -945,6 +946,7 @@ static void win32_display_frame( vo_driver_t * vo_driver, vo_frame_t * vo_frame
int offset;
int size;
+
/* if the required width, height or format has changed
* then recreate the secondary buffer */
@@ -1091,6 +1093,7 @@ static void win32_display_frame( vo_driver_t * vo_driver, vo_frame_t * vo_frame
vo_frame->free(&win32_driver->current->vo_frame);
}
win32_driver->current = (win32_frame_t *)vo_frame;
+
}
static void win32_overlay_blend( vo_driver_t * vo_driver, vo_frame_t * vo_frame, vo_overlay_t * vo_overlay )
@@ -1098,6 +1101,7 @@ static void win32_overlay_blend( vo_driver_t * vo_driver, vo_frame_t * vo_frame,
win32_frame_t * win32_frame = ( win32_frame_t * ) vo_frame;
win32_driver_t * win32_driver = ( win32_driver_t * ) vo_driver;
+
/* temporary overlay support, somthing more appropriate
* for win32 will be devised at a later date */
@@ -1176,6 +1180,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *wi
directx_class_t *class = (directx_class_t *)class_gen;
win32_driver_t *win32_driver = ( win32_driver_t * ) xine_xmalloc ( sizeof( win32_driver_t ) );
+
_x_alphablend_init(&win32_driver->alphablend_extra_data, class->xine);
win32_driver->xine = class->xine;
@@ -1196,12 +1201,15 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *wi
win32_driver->vo_driver.dispose = win32_exit;
win32_driver->vo_driver.redraw_needed = win32_redraw_needed;
- CreatePrimary( win32_driver );
+ if (!CreatePrimary( win32_driver )) {
+ Destroy( win32_driver );
+ return NULL;
+ }
if( !CheckPixelFormat( win32_driver ) )
{
Error( 0, "vo_directx : Your screen pixel format is not supported" );
Destroy( win32_driver );
- return 0;
+ return NULL;
}
#if (NEW_YUV)
@@ -1212,7 +1220,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *wi
#endif
return ( vo_driver_t * ) win32_driver;
-}
+}
static char* get_identifier (video_driver_class_t *this_gen) {
@@ -1232,7 +1240,7 @@ static void dispose_class (video_driver_class_t *this_gen) {
static void *init_class (xine_t *xine, void *visual_gen) {
directx_class_t *directx;
-
+
/*
* from this point on, nothing should go wrong anymore
*/
diff --git a/src/xine-engine/Makefile.am b/src/xine-engine/Makefile.am
index 02eb6136a..735f41eae 100644
--- a/src/xine-engine/Makefile.am
+++ b/src/xine-engine/Makefile.am
@@ -8,16 +8,16 @@ lib_LTLIBRARIES = libxine.la
XINEUTILS_LIB = $(top_builddir)/src/xine-utils/libxineutils.la
INTERNAL_ZLIB_LIB = $(top_builddir)/win32/contrib/zlib/libzlib.la
-DIRENT_LIB = $(top_builddir)/win32/contrib/libdirent.la
INTERNAL_PTHREAD_LIB = $(top_builddir)/win32/contrib/pthreads/libpthread.la
DEF_FILE = libxine-$(XINE_MAJOR).def
if HAVE_ZLIB
else
zlib_dep = $(INTERNAL_ZLIB_LIB)
endif
-if WIN32
-dirent_lib = $(DIRENT_LIB)
+if HAVE_INTERNAL_WIN32_PTHREAD
pthread_dep = $(INTERNAL_PTHREAD_LIB)
+endif
+if WIN32
def_ldflags="-Wl,--output-def,$(DEF_FILE)"
endif
@@ -35,10 +35,10 @@ if INCLUDED_INTL
INCLUDED_INTLLIBS = @INTLLIBS@
endif
libxine_la_DEPENDENCIES = $(INCLUDED_INTLLIBS) $(XINEUTILS_LIB) $(zlib_dep) \
- $(dirent_lib) $(pthread_dep) $(LIBXINEPOSIX)
+ $(pthread_dep) $(LIBXINEPOSIX)
libxine_la_LIBADD = $(THREAD_LIBS) $(DYNAMIC_LD_LIBS) @INTLLIBS@ $(ZLIB_LIBS) \
-lm $(XINEUTILS_LIB) $(LIBICONV) $(FT2_LIBS) \
- $(dirent_lib) $(LIBXINEPOSIX) $(RT_LIBS)
+ $(LIBXINEPOSIX) $(RT_LIBS)
libxine_la_LDFLAGS = \
-version-info $(XINE_LT_CURRENT):$(XINE_LT_REVISION):$(XINE_LT_AGE) \
@@ -72,6 +72,3 @@ $(INTERNAL_PTHREAD_LIB):
$(INTERNAL_ZLIB_LIB):
$(MAKE) -C $(top_builddir)/win32/contrib/zlib libzlib.la
-
-$(DIRENT_LIB):
- $(MAKE) -C $(top_builddir)/win32/contrib libdirent.la
diff --git a/src/xine-engine/audio_decoder.c b/src/xine-engine/audio_decoder.c
index dd4a1fb3f..f3b09b50b 100644
--- a/src/xine-engine/audio_decoder.c
+++ b/src/xine-engine/audio_decoder.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -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: audio_decoder.c,v 1.134 2005/04/19 17:42:29 hadess Exp $
+ * $Id: audio_decoder.c,v 1.135 2005/08/25 15:36:30 valtri Exp $
*
*
* functions that implement audio decoding
@@ -148,7 +148,7 @@ static void *audio_decoder_loop (void *stream_gen) {
pthread_cond_broadcast (&stream->counter_changed);
- if (stream->video_thread) {
+ if (stream->video_thread_created) {
while (stream->finished_count_video < stream->finished_count_audio) {
struct timeval tv;
struct timespec ts;
@@ -490,7 +490,8 @@ void _x_audio_decoder_init (xine_stream_t *stream) {
pth_params.sched_priority = sched_get_priority_min(SCHED_OTHER);
pthread_attr_setschedparam(&pth_attrs, &pth_params);
pthread_attr_setscope(&pth_attrs, PTHREAD_SCOPE_SYSTEM);
-
+
+ stream->audio_thread_created = 1;
if ((err = pthread_create (&stream->audio_thread,
&pth_attrs, audio_decoder_loop, stream)) != 0) {
xprintf (stream->xine, XINE_VERBOSITY_DEBUG,
@@ -507,14 +508,15 @@ void _x_audio_decoder_shutdown (xine_stream_t *stream) {
buf_element_t *buf;
void *p;
- if (stream->audio_thread) {
+ if (stream->audio_thread_created) {
/* stream->audio_fifo->clear(stream->audio_fifo); */
buf = stream->audio_fifo->buffer_pool_alloc (stream->audio_fifo);
buf->type = BUF_CONTROL_QUIT;
stream->audio_fifo->put (stream->audio_fifo, buf);
- pthread_join (stream->audio_thread, &p);
+ pthread_join (stream->audio_thread, &p);
+ stream->audio_thread_created = 0;
}
stream->audio_fifo->dispose (stream->audio_fifo);
diff --git a/src/xine-engine/audio_out.c b/src/xine-engine/audio_out.c
index 7383d3859..41f024641 100644
--- a/src/xine-engine/audio_out.c
+++ b/src/xine-engine/audio_out.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -17,7 +17,7 @@
* along with self program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: audio_out.c,v 1.190 2005/01/20 11:29:43 holstsn Exp $
+ * $Id: audio_out.c,v 1.191 2005/08/25 15:36:30 valtri Exp $
*
* 22-8-2001 James imported some useful AC3 sections from the previous alsa driver.
* (c) 2001 Andy Lo A Foe <andy@alsaplayer.org>
@@ -216,6 +216,7 @@ typedef struct {
int audio_loop_running;
int grab_only; /* => do not start thread, frontend will consume samples */
pthread_t audio_thread;
+ int audio_thread_created;
int64_t audio_step; /* pts per 32 768 samples (sample = #bytes/2) */
int32_t frames_per_kpts; /* frames per 1024/90000 sec */
@@ -1543,7 +1544,7 @@ static void ao_exit(xine_audio_port_t *this_gen) {
fifo_append (this->out_fifo, buf);
pthread_join (this->audio_thread, &p);
- this->audio_thread = 0;
+ this->audio_thread_created = 0;
}
if (!this->grab_only) {
@@ -2103,7 +2104,8 @@ xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver,
pthread_attr_init(&pth_attrs);
pthread_attr_setscope(&pth_attrs, PTHREAD_SCOPE_SYSTEM);
-
+
+ this->audio_thread_created = 1;
if ((err = pthread_create (&this->audio_thread,
&pth_attrs, ao_loop, this)) != 0) {
diff --git a/src/xine-engine/demux.c b/src/xine-engine/demux.c
index 90f2d3a99..f89fec38f 100644
--- a/src/xine-engine/demux.c
+++ b/src/xine-engine/demux.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -20,7 +20,7 @@
* Demuxer helper functions
* hide some xine engine details from demuxers and reduce code duplication
*
- * $Id: demux.c,v 1.58 2005/07/17 23:11:45 dsalt Exp $
+ * $Id: demux.c,v 1.59 2005/08/25 15:36:30 valtri Exp $
*/
@@ -150,13 +150,13 @@ void _x_demux_control_headers_done (xine_stream_t *stream) {
pthread_mutex_lock (&stream->counter_lock);
- if (stream->video_thread) {
+ if (stream->video_thread_created) {
header_count_video = stream->header_count_video + 1;
} else {
header_count_video = 0;
}
- if (stream->audio_thread) {
+ if (stream->audio_thread_created) {
header_count_audio = stream->header_count_audio + 1;
} else {
header_count_audio = 0;
@@ -292,9 +292,9 @@ static void *demux_loop (void *stream_gen) {
lprintf ("loop finished (status: %d)\n", status);
pthread_mutex_lock (&stream->counter_lock);
- if (stream->audio_thread)
+ if (stream->audio_thread_created)
finished_count_audio = stream->finished_count_audio + 1;
- if (stream->video_thread)
+ if (stream->video_thread_created)
finished_count_video = stream->finished_count_video + 1;
pthread_mutex_unlock (&stream->counter_lock);
@@ -332,12 +332,13 @@ int _x_demux_start_thread (xine_stream_t *stream) {
if( !stream->demux_thread_running ) {
- if (stream->demux_thread) {
+ if (stream->demux_thread_created) {
void *p;
pthread_join(stream->demux_thread, &p);
}
stream->demux_thread_running = 1;
+ stream->demux_thread_created = 1;
if ((err = pthread_create (&stream->demux_thread,
NULL, demux_loop, (void *)stream)) != 0) {
printf ("demux: can't create new thread (%s)\n", strerror(err));
@@ -368,9 +369,9 @@ int _x_demux_stop_thread (xine_stream_t *stream) {
lprintf ("joining thread %ld\n", stream->demux_thread );
- if( stream->demux_thread ) {
+ if( stream->demux_thread_created ) {
pthread_join (stream->demux_thread, &p);
- stream->demux_thread = 0;
+ stream->demux_thread_created = 0;
}
/*
diff --git a/src/xine-engine/load_plugins.c b/src/xine-engine/load_plugins.c
index eceacb799..6910f157b 100644
--- a/src/xine-engine/load_plugins.c
+++ b/src/xine-engine/load_plugins.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -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: load_plugins.c,v 1.210 2005/07/18 01:46:02 miguelfreitas Exp $
+ * $Id: load_plugins.c,v 1.211 2005/08/25 15:36:30 valtri Exp $
*
*
* Load input/demux/audio_out/video_out/codec plugins
@@ -32,7 +32,9 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
+#ifdef HAVE_DIRENT_H
#include <dirent.h>
+#endif
#include <dlfcn.h>
#include <string.h>
#include <errno.h>
@@ -536,19 +538,20 @@ static void collect_plugins(xine_t *this, char *path){
str[path_len + 1] = '\0';
while ((pEntry = readdir (dir)) != NULL) {
- size_t new_str_size;
+ size_t new_str_size, d_len;
void *lib = NULL;
plugin_info_t *info = NULL;
struct stat statbuffer;
- new_str_size = path_len + pEntry->d_reclen + 2;
+ d_len = strlen(pEntry->d_name);
+ new_str_size = path_len + d_len + 2;
if (str_size < new_str_size) {
str_size = new_str_size + new_str_size / 2;
str = realloc(str, str_size);
}
- xine_fast_memcpy(&str[path_len + 1], pEntry->d_name, pEntry->d_reclen + 1);
+ xine_fast_memcpy(&str[path_len + 1], pEntry->d_name, d_len + 1);
if (stat(str, &statbuffer)) {
xine_log (this, XINE_LOG_PLUGIN, _("load_plugins: unable to stat %s\n"), str);
diff --git a/src/xine-engine/osd.c b/src/xine-engine/osd.c
index 745069570..e76f22167 100644
--- a/src/xine-engine/osd.c
+++ b/src/xine-engine/osd.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -31,7 +31,9 @@
#include <stdio.h>
#include <zlib.h>
#include <sys/types.h>
+#ifdef HAVE_DIRENT_H
#include <dirent.h>
+#endif
#include <errno.h>
#ifdef HAVE_ICONV
diff --git a/src/xine-engine/video_decoder.c b/src/xine-engine/video_decoder.c
index e4e500051..edec3a00c 100644
--- a/src/xine-engine/video_decoder.c
+++ b/src/xine-engine/video_decoder.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -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: video_decoder.c,v 1.158 2005/04/19 17:42:30 hadess Exp $
+ * $Id: video_decoder.c,v 1.159 2005/08/25 15:36:30 valtri Exp $
*
*/
@@ -220,7 +220,7 @@ static void *video_decoder_loop (void *stream_gen) {
pthread_cond_broadcast (&stream->counter_changed);
- if (stream->audio_thread) {
+ if (stream->audio_thread_created) {
while (stream->finished_count_video > stream->finished_count_audio) {
struct timeval tv;
@@ -500,7 +500,8 @@ void _x_video_decoder_init (xine_stream_t *stream) {
pth_params.sched_priority = sched_get_priority_min(SCHED_OTHER);
pthread_attr_setschedparam(&pth_attrs, &pth_params);
pthread_attr_setscope(&pth_attrs, PTHREAD_SCOPE_SYSTEM);
-
+
+ stream->video_thread_created = 1;
if ((err = pthread_create (&stream->video_thread,
&pth_attrs, video_decoder_loop, stream)) != 0) {
fprintf (stderr, "video_decoder: can't create new thread (%s)\n",
@@ -519,7 +520,7 @@ void _x_video_decoder_shutdown (xine_stream_t *stream) {
lprintf ("shutdown...\n");
- if (stream->video_thread) {
+ if (stream->video_thread_created) {
/* stream->video_fifo->clear(stream->video_fifo); */
@@ -533,6 +534,7 @@ void _x_video_decoder_shutdown (xine_stream_t *stream) {
lprintf ("shutdown...3\n");
pthread_join (stream->video_thread, &p);
+ stream->video_thread_created = 0;
lprintf ("shutdown...4\n");
diff --git a/src/xine-engine/xine.c b/src/xine-engine/xine.c
index 40f8eb465..c3f326bcd 100644
--- a/src/xine-engine/xine.c
+++ b/src/xine-engine/xine.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -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.c,v 1.314 2005/07/21 02:51:14 miguelfreitas Exp $
+ * $Id: xine.c,v 1.315 2005/08/25 15:36:30 valtri Exp $
*/
/*
@@ -288,7 +288,7 @@ static void stop_internal (xine_stream_t *stream) {
/*
* stop demux
*/
- if (stream->demux_plugin && stream->demux_thread) {
+ if (stream->demux_plugin && stream->demux_thread_created) {
lprintf ("stopping demux\n");
_x_demux_stop_thread( stream );
lprintf ("demux stopped\n");
diff --git a/src/xine-engine/xine_internal.h b/src/xine-engine/xine_internal.h
index 81a9f6ac1..d5aba92b4 100644
--- a/src/xine-engine/xine_internal.h
+++ b/src/xine-engine/xine_internal.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -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_internal.h,v 1.166 2005/07/17 23:11:45 dsalt Exp $
+ * $Id: xine_internal.h,v 1.167 2005/08/25 15:36:30 valtri Exp $
*
*/
@@ -248,12 +248,14 @@ struct xine_stream_s {
/* vo_driver_t *video_driver;*/
pthread_t video_thread;
+ int video_thread_created;
video_decoder_t *video_decoder_plugin;
int video_decoder_streamtype;
extra_info_t *video_decoder_extra_info;
int video_channel;
pthread_t audio_thread;
+ int audio_thread_created;
audio_decoder_t *audio_decoder_plugin;
int audio_decoder_streamtype;
extra_info_t *audio_decoder_extra_info;
@@ -308,6 +310,7 @@ struct xine_stream_s {
/* demux thread stuff */
pthread_t demux_thread;
+ int demux_thread_created;
int demux_thread_running;
pthread_mutex_t demux_lock;
int demux_action_pending;
diff --git a/src/xine-utils/xineutils.h b/src/xine-utils/xineutils.h
index eb4897db1..017273dd9 100644
--- a/src/xine-utils/xineutils.h
+++ b/src/xine-utils/xineutils.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000-2004 the xine project
+ * Copyright (C) 2000-2005 the xine project
*
* This file is part of xine, a free video player.
*
@@ -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: xineutils.h,v 1.96 2004/12/12 13:51:30 valtri Exp $
+ * $Id: xineutils.h,v 1.97 2005/08/25 15:37:02 valtri Exp $
*
*/
#ifndef XINEUTILS_H
@@ -59,6 +59,10 @@ extern "C" {
#include <stdio.h>
#include <string.h>
+/* for alloca under MinGW */
+#ifdef HAVE_MALLOC_H
+#include <malloc.h>
+#endif
/*
* debugable mutexes