diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-06-19 12:08:08 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-06-19 12:08:08 +0200 |
commit | 3821329305f606cb9d6dce681c228434834f4f42 (patch) | |
tree | 8346c683ea76f0b281a6159fa58ebe2e8ec85033 | |
parent | 5eb285cf1ce430dc46392e2335350858d4de6023 (diff) | |
download | gtk-vlc-player-3821329305f606cb9d6dce681c228434834f4f42.tar.gz |
emulate VLC_PLUGIN_PATH support for libvlc < 2.0.0
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | lib/gtk-vlc-player/gtk-vlc-player.c | 32 |
2 files changed, 32 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index 96b7ccf..a6fc718 100644 --- a/configure.ac +++ b/configure.ac @@ -82,7 +82,7 @@ gtk_vlc_player_catalogsdir=${glade3_catalogsdir:-$gtk_vlc_player_datadir/catalog AC_SUBST(gtk_vlc_player_catalogsdir) # FIXME: further restrict libvlc version -PKG_CHECK_MODULES(LIBVLC, [libvlc >= 1.1.13 vlc-plugin]) +PKG_CHECK_MODULES(LIBVLC, [libvlc >= 1.1.10 vlc-plugin]) PKG_CHECK_MODULES(LIBXML2, [libxml-2.0], , [ AC_CHECK_PROG(XML2_CONFIG, xml2-config, xml2-config) diff --git a/lib/gtk-vlc-player/gtk-vlc-player.c b/lib/gtk-vlc-player/gtk-vlc-player.c index 20d05854..301d3d3 100644 --- a/lib/gtk-vlc-player/gtk-vlc-player.c +++ b/lib/gtk-vlc-player/gtk-vlc-player.c @@ -37,11 +37,13 @@ #endif #include <vlc/vlc.h> +#include <vlc/libvlc_version.h> #include "cclosure-marshallers.h" #include "gtk-vlc-player.h" static void gtk_vlc_player_class_init(GtkVlcPlayerClass *klass); +static inline libvlc_instance_t *create_vlc_instance(void); static void gtk_vlc_player_init(GtkVlcPlayer *klass); static void gtk_vlc_player_dispose(GObject *gobject); @@ -134,6 +136,34 @@ gtk_vlc_player_class_init(GtkVlcPlayerClass *klass) g_type_class_add_private(klass, sizeof(GtkVlcPlayerPrivate)); } +static inline libvlc_instance_t * +create_vlc_instance(void) +{ + gchar **vlc_argv; + gint vlc_argc = 0; + + libvlc_instance_t *ret; + + vlc_argv = g_malloc_n(2, sizeof(vlc_argv[0])); + vlc_argv[vlc_argc++] = g_strdup(g_get_prgname()); + +#if LIBVLC_VERSION_INT < LIBVLC_VERSION(2,0,0,0) + if (g_getenv("VLC_PLUGIN_PATH") != NULL) { + vlc_argv = g_realloc_n(vlc_argv, + vlc_argc + 2 + 1, sizeof(vlc_argv[0])); + vlc_argv[vlc_argc++] = g_strdup("--plugin-path"); + vlc_argv[vlc_argc++] = g_strdup(g_getenv("VLC_PLUGIN_PATH")); + } +#endif + + vlc_argv[vlc_argc] = NULL; + + ret = libvlc_new((int)vlc_argc, (const char *const *)vlc_argv); + + g_strfreev(vlc_argv); + return ret; +} + static void gtk_vlc_player_init(GtkVlcPlayer *klass) { @@ -189,7 +219,7 @@ gtk_vlc_player_init(GtkVlcPlayer *klass) "value-changed", G_CALLBACK(vol_adj_on_value_changed), klass); - klass->priv->vlc_inst = libvlc_new(0, NULL); + klass->priv->vlc_inst = create_vlc_instance(); klass->priv->media_player = libvlc_media_player_new(klass->priv->vlc_inst); /* sign up for time updates */ |