aboutsummaryrefslogtreecommitdiff
path: root/lib/gtk-vlc-player
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gtk-vlc-player')
-rw-r--r--lib/gtk-vlc-player/gtk-vlc-player.c51
-rw-r--r--lib/gtk-vlc-player/gtk-vlc-player.h4
2 files changed, 38 insertions, 17 deletions
diff --git a/lib/gtk-vlc-player/gtk-vlc-player.c b/lib/gtk-vlc-player/gtk-vlc-player.c
index fec9adf..b8582ad 100644
--- a/lib/gtk-vlc-player/gtk-vlc-player.c
+++ b/lib/gtk-vlc-player/gtk-vlc-player.c
@@ -30,6 +30,16 @@ static inline void update_length(GtkVlcPlayer *player, gint64 new_length);
static void vlc_time_changed(const struct libvlc_event_t *event, void *userdata);
static void vlc_length_changed(const struct libvlc_event_t *event, void *userdata);
+static void vlc_player_load_media(GtkVlcPlayer *player, libvlc_media_t *media);
+
+enum {
+ TIME_CHANGED_SIGNAL,
+ LENGTH_CHANGED_SIGNAL,
+ LAST_SIGNAL
+};
+
+static guint gtk_vlc_player_signals[LAST_SIGNAL] = {0, 0};
+
GType
gtk_vlc_player_get_type(void)
{
@@ -56,15 +66,6 @@ gtk_vlc_player_get_type(void)
return type;
}
-enum {
- TIME_CHANGED_SIGNAL,
- LENGTH_CHANGED_SIGNAL,
- LAST_SIGNAL
-};
-
-
-static guint gtk_vlc_player_signals[LAST_SIGNAL] = {0, 0};
-
static void
gtk_vlc_player_class_init(GtkVlcPlayerClass *klass)
{
@@ -252,22 +253,40 @@ gtk_vlc_player_new(void)
return GTK_WIDGET(g_object_new(GTK_TYPE_VLC_PLAYER, NULL));
}
+static void
+vlc_player_load_media(GtkVlcPlayer *player, libvlc_media_t *media)
+{
+ libvlc_media_parse(media);
+ libvlc_media_player_set_media(player->media_player, media);
+
+ /* NOTE: media was parsed so get_duration works */
+ update_length(player, (gint64)libvlc_media_get_duration(media));
+ update_time(player, 0);
+}
+
gboolean
-gtk_vlc_player_load(GtkVlcPlayer *player, const gchar *uri)
+gtk_vlc_player_load_filename(GtkVlcPlayer *player, const gchar *file)
{
libvlc_media_t *media;
- media = libvlc_media_new_location(player->vlc_inst, (const char *)uri);
+ media = libvlc_media_new_path(player->vlc_inst, (const char *)file);
if (media == NULL)
return TRUE;
+ vlc_player_load_media(player, media);
+ libvlc_media_release(media);
- libvlc_media_parse(media);
- libvlc_media_player_set_media(player->media_player, media);
+ return FALSE;
+}
- /* NOTE: media was parsed so get_duration works */
- update_length(player, (gint64)libvlc_media_get_duration(media));
- update_time(player, 0);
+gboolean
+gtk_vlc_player_load_uri(GtkVlcPlayer *player, const gchar *uri)
+{
+ libvlc_media_t *media;
+ media = libvlc_media_new_location(player->vlc_inst, (const char *)uri);
+ if (media == NULL)
+ return TRUE;
+ vlc_player_load_media(player, media);
libvlc_media_release(media);
return FALSE;
diff --git a/lib/gtk-vlc-player/gtk-vlc-player.h b/lib/gtk-vlc-player/gtk-vlc-player.h
index 665f980..969aa6d 100644
--- a/lib/gtk-vlc-player/gtk-vlc-player.h
+++ b/lib/gtk-vlc-player/gtk-vlc-player.h
@@ -50,7 +50,9 @@ GType gtk_vlc_player_get_type(void);
* API
*/
GtkWidget *gtk_vlc_player_new(void);
-gboolean gtk_vlc_player_load(GtkVlcPlayer *player, const gchar *uri);
+
+gboolean gtk_vlc_player_load_filename(GtkVlcPlayer *player, const gchar *file);
+gboolean gtk_vlc_player_load_uri(GtkVlcPlayer *player, const gchar *uri);
void gtk_vlc_player_play(GtkVlcPlayer *player);
void gtk_vlc_player_pause(GtkVlcPlayer *player);