diff options
author | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2012-01-18 21:48:29 +0000 |
---|---|---|
committer | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2012-01-18 21:48:29 +0000 |
commit | 7c873b0529321eafb2968903dfcfd4258fcf6005 (patch) | |
tree | 63fea15b89aad68725988f3f3ef8aec0f80b3107 | |
parent | c2ffae7ba0ec07f30e1887ff7ba4612c19e2dce4 (diff) | |
download | xine-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.c | 10 | ||||
-rw-r--r-- | src/xine-engine/load_plugins.c | 3 | ||||
-rw-r--r-- | src/xine-engine/xine.c | 10 | ||||
-rw-r--r-- | src/xine-engine/xine_internal.h | 6 |
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 */ |