diff options
Diffstat (limited to 'src')
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 |