aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-06-19 12:08:08 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-06-19 12:08:08 +0200
commit3821329305f606cb9d6dce681c228434834f4f42 (patch)
tree8346c683ea76f0b281a6159fa58ebe2e8ec85033
parent5eb285cf1ce430dc46392e2335350858d4de6023 (diff)
downloadgtk-vlc-player-3821329305f606cb9d6dce681c228434834f4f42.tar.gz
emulate VLC_PLUGIN_PATH support for libvlc < 2.0.0
-rw-r--r--configure.ac2
-rw-r--r--lib/gtk-vlc-player/gtk-vlc-player.c32
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 */