summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarren Salt <linux@youmustbejoking.demon.co.uk>2012-01-18 21:48:29 +0000
committerDarren Salt <linux@youmustbejoking.demon.co.uk>2012-01-18 21:48:29 +0000
commit7c873b0529321eafb2968903dfcfd4258fcf6005 (patch)
tree63fea15b89aad68725988f3f3ef8aec0f80b3107
parentc2ffae7ba0ec07f30e1887ff7ba4612c19e2dce4 (diff)
downloadxine-lib-7c873b0529321eafb2968903dfcfd4258fcf6005.tar.gz
xine-lib-7c873b0529321eafb2968903dfcfd4258fcf6005.tar.bz2
Hack to avoid xine-list-* causing catalog.cache to be written.
-rw-r--r--misc/xine-list.c10
-rw-r--r--src/xine-engine/load_plugins.c3
-rw-r--r--src/xine-engine/xine.c10
-rw-r--r--src/xine-engine/xine_internal.h6
4 files changed, 28 insertions, 1 deletions
diff --git a/misc/xine-list.c b/misc/xine-list.c
index ec7b7f694..c9e160b2f 100644
--- a/misc/xine-list.c
+++ b/misc/xine-list.c
@@ -107,6 +107,16 @@ to the extent permitted by law.\n",
return 0;
xine_t *xine = xine_new ();
+
+ /* Avoid writing catalog.cache if possible */
+ int major, minor, sub;
+ xine_get_version (&major, &minor, &sub);
+ if ((major == 1 && minor == 1 && sub > 20) ||
+ (major == 1 && minor == 2 && sub > 0) ||
+ (major == 1 && minor > 2) ||
+ (major > 1))
+ xine_set_flags (xine, XINE_FLAG_NO_WRITE_CACHE);
+
xine_init (xine);
char *text = NULL;
diff --git a/src/xine-engine/load_plugins.c b/src/xine-engine/load_plugins.c
index 06ff719e0..206f259e5 100644
--- a/src/xine-engine/load_plugins.c
+++ b/src/xine-engine/load_plugins.c
@@ -1201,7 +1201,8 @@ void _x_scan_plugins (xine_t *this) {
xine_list_delete (plugindirs);
free(homedir);
- save_catalog (this);
+ if ((_x_flags & XINE_FLAG_NO_WRITE_CACHE) == 0)
+ save_catalog (this);
load_required_plugins (this);
diff --git a/src/xine-engine/xine.c b/src/xine-engine/xine.c
index b95a14292..5a180c212 100644
--- a/src/xine-engine/xine.c
+++ b/src/xine-engine/xine.c
@@ -78,6 +78,10 @@
#endif /* WIN32 */
+/* FIXME-ABI Global variable. Done this way for ABI & API reasons... */
+int _x_flags = 0;
+
+
static void mutex_cleanup (void *mutex) {
pthread_mutex_unlock ((pthread_mutex_t *) mutex);
}
@@ -1695,6 +1699,12 @@ static void config_save_cb (void *this_gen, xine_cfg_entry_t *entry) {
this->save_path = entry->str_value;
}
+void xine_set_flags (xine_t *this, int flags)
+{
+ this = this; /* FIXME-ABI: one day, these will be in xine_t...? */
+ _x_flags = flags;
+}
+
void xine_init (xine_t *this) {
static const char *demux_strategies[] = {"default", "reverse", "content",
"extension", NULL};
diff --git a/src/xine-engine/xine_internal.h b/src/xine-engine/xine_internal.h
index 939876ebe..af8817ac5 100644
--- a/src/xine-engine/xine_internal.h
+++ b/src/xine-engine/xine_internal.h
@@ -123,6 +123,12 @@ struct xine_s {
#endif
};
+/* FIXME-ABI Some global flag bits */
+/* See xine_set_flags() */
+#ifdef XINE_ENGINE_INTERNAL
+extern int _x_flags XINE_PROTECTED;
+#endif
+
/*
* xine thread tickets
*/