From: Frantisek D. <va...@us...> - 2006-05-08 17:05:08
|
Update of /cvsroot/xine/xine-lib/src/libw32dll In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2348 Modified Files: Makefile.am qt_decoder.c w32codec.c Added Files: common.c Log Message: Fix the freeze on QuickTime files when configured with non-existing win32 codecs path (win32.c have known nothing about all paths tested in module.c). --- NEW FILE: common.c --- #ifdef HAVE_DIRENT_H #include <dirent.h> #endif static char *get_win32_codecs_path(config_values_t *cfg) { DIR *dir; char *path, *cfgpath; char *listpath[] = { "", "/usr/lib/codecs", "/usr/local/lib/codecs", "/usr/lib/win32", "/usr/local/lib/win32", NULL }; int i = 0; cfgpath = cfg->register_string (cfg, "decoder.external.win32_codecs_path", WIN32_PATH, _("path to Win32 codecs"), _("If you have the Windows or Apple Quicktime codec packs " "installed, specify the path the codec directory here. " "If xine can find the Windows or Apple Quicktime codecs, " "it will use them to decode various Windows Media and " "Quicktime streams for you. Consult the xine FAQ for " "more information on how to install the codecs."), 10, NULL, NULL); while (listpath[i]) { if (i == 0) path = cfgpath; else path = listpath[i]; if ((dir = opendir(path)) != NULL) { closedir(dir); return path; } i++; } return NULL; } Index: Makefile.am =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/Makefile.am,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- Makefile.am 14 May 2003 16:21:52 -0000 1.28 +++ Makefile.am 8 May 2006 15:45:17 -0000 1.29 @@ -13,6 +13,8 @@ lib_LTLIBRARIES = $(w32dll_codec) $(qt_codec) +EXTRA_DIST = common.c + xineplug_decode_w32dll_la_SOURCES = w32codec.c xineplug_decode_w32dll_la_LDFLAGS = -avoid-version -module @XINE_PLUGIN_MIN_SYMS@ xineplug_decode_w32dll_la_LIBADD = \ Index: qt_decoder.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/qt_decoder.c,v retrieving revision 1.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- qt_decoder.c 7 May 2006 09:31:57 -0000 1.42 +++ qt_decoder.c 8 May 2006 15:45:17 -0000 1.43 @@ -49,6 +49,8 @@ #include "wine/windef.h" #include "wine/ldt_keeper.h" +#include "common.c" + /* * This version of the macro avoids compiler warnings about * multiple-character constants. It also does NOT assume @@ -587,6 +589,9 @@ qta_class_t *this; config_values_t *cfg; + cfg = xine->config; + if ((win32_def_path = get_win32_codecs_path(cfg)) == NULL) return NULL; + pthread_once (&once_control, init_routine); this = (qta_class_t *) xine_xmalloc (sizeof (qta_class_t)); @@ -596,17 +601,6 @@ this->decoder_class.get_description = qta_get_description; this->decoder_class.dispose = qta_dispose_class; - cfg = xine->config; - win32_def_path = cfg->register_string (cfg, "decoder.external.win32_codecs_path", WIN32_PATH, - _("path to Win32 codecs"), - _("If you have the Windows or Apple Quicktime codec packs " - "installed, specify the path the codec directory here. " - "If xine can find the Windows or Apple Quicktime codecs, " - "it will use them to decode various Windows Media and " - "Quicktime streams for you. Consult the xine FAQ for " - "more information on how to install the codecs."), - 10, NULL, NULL); - return this; } @@ -1116,17 +1110,9 @@ static void *qtv_init_class (xine_t *xine, void *data) { qtv_class_t *this; - config_values_t *cfg = xine->config; + config_values_t *cfg = xine->config; - win32_def_path = cfg->register_string (cfg, "decoder.external.win32_codecs_path", WIN32_PATH, - _("path to Win32 codecs"), - _("If you have the Windows or Apple Quicktime codec packs " - "installed, specify the path the codec directory here. " - "If xine can find the Windows or Apple Quicktime codecs, " - "it will use them to decode various Windows Media and " - "Quicktime streams for you. Consult the xine FAQ for " - "more information on how to install the codecs."), - 10, NULL, NULL); + if ((win32_def_path = get_win32_codecs_path(cfg)) == NULL) return NULL; lprintf ("%s...\n", __XINE_FUNCTION__); Index: w32codec.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/w32codec.c,v retrieving revision 1.152 retrieving revision 1.153 diff -u -r1.152 -r1.153 --- w32codec.c 7 May 2006 09:31:57 -0000 1.152 +++ w32codec.c 8 May 2006 15:45:17 -0000 1.153 @@ -59,6 +59,8 @@ #include "buffer.h" #include "xineutils.h" +#include "common.c" + static GUID CLSID_Voxware = { 0x73f7a062, 0x8829, 0x11d1, @@ -1592,15 +1594,7 @@ config_values_t *cfg; cfg = xine->config; - win32_def_path = cfg->register_string (cfg, "decoder.external.win32_codecs_path", WIN32_PATH, - _("path to Win32 codecs"), - _("If you have the Windows or Apple Quicktime codec packs " - "installed, specify the path the codec directory here. " - "If xine can find the Windows or Apple Quicktime codecs, " - "it will use them to decode various Windows Media and " - "Quicktime streams for you. Consult the xine FAQ for " - "more information on how to install the codecs."), - 10, NULL, NULL); + if ((win32_def_path = get_win32_codecs_path(cfg)) == NULL) return NULL; this = (w32v_class_t *) xine_xmalloc (sizeof (w32v_class_t)); @@ -1661,6 +1655,9 @@ w32a_class_t *this; config_values_t *cfg; + cfg = xine->config; + if ((win32_def_path = get_win32_codecs_path(cfg)) == NULL) return NULL; + this = (w32a_class_t *) xine_xmalloc (sizeof (w32a_class_t)); this->decoder_class.open_plugin = open_audio_decoder_plugin; @@ -1668,17 +1665,6 @@ this->decoder_class.get_description = get_description; this->decoder_class.dispose = dispose_class; - cfg = xine->config; - win32_def_path = cfg->register_string (cfg, "decoder.external.win32_codecs_path", WIN32_PATH, - _("path to Win32 codecs"), - _("If you have the Windows or Apple Quicktime codec packs " - "installed, specify the path the codec directory here. " - "If xine can find the Windows or Apple Quicktime codecs, " - "it will use them to decode various Windows Media and " - "Quicktime streams for you. Consult the xine FAQ for " - "more information on how to install the codecs."), - 10, NULL, NULL); - pthread_once (&once_control, init_routine); return this; |