aboutsummaryrefslogtreecommitdiff
path: root/lib/gtk-vlc-player/gtk-vlc-player.c
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-07 04:00:01 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-07 04:00:01 +0200
commitef36b6db09265b1b3110d7596de3ad8385fcfbe5 (patch)
treebafbc21ba87c68fbc94b2c7eedf6d2a6731f696d /lib/gtk-vlc-player/gtk-vlc-player.c
parent77258a66029b5fd7cb18d75a448e3a7a87a7eb99 (diff)
downloadexperiment-player-ef36b6db09265b1b3110d7596de3ad8385fcfbe5.tar.gz
support for setting volume in vlc player widget
API function and volume adjustment * attached volume button with player widget
Diffstat (limited to 'lib/gtk-vlc-player/gtk-vlc-player.c')
-rw-r--r--lib/gtk-vlc-player/gtk-vlc-player.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/gtk-vlc-player/gtk-vlc-player.c b/lib/gtk-vlc-player/gtk-vlc-player.c
index 8686eef..136310c 100644
--- a/lib/gtk-vlc-player/gtk-vlc-player.c
+++ b/lib/gtk-vlc-player/gtk-vlc-player.c
@@ -22,6 +22,7 @@ static void widget_on_realize(GtkWidget *widget, gpointer data);
static gboolean widget_on_click(GtkWidget *widget, GdkEventButton *event, gpointer data);
static void time_adj_on_value_changed(GtkAdjustment *adj, gpointer user_data);
+static void vol_adj_on_value_changed(GtkAdjustment *adj, gpointer user_data);
static inline void update_time(GtkVlcPlayer *player, gint64 new_time);
static inline void update_length(GtkVlcPlayer *player, gint64 new_length);
@@ -115,6 +116,11 @@ gtk_vlc_player_init(GtkVlcPlayer *klass)
g_signal_connect(G_OBJECT(klass->time_adjustment), "value-changed",
G_CALLBACK(time_adj_on_value_changed), klass);
+ klass->volume_adjustment = gtk_adjustment_new(1., 0., 1., 0.02, 0., 0.);
+ klass->vol_adj_on_value_changed_id =
+ g_signal_connect(G_OBJECT(klass->volume_adjustment), "value-changed",
+ G_CALLBACK(vol_adj_on_value_changed), klass);
+
klass->vlc_inst = libvlc_new(0, NULL);
klass->media_player = libvlc_media_player_new(klass->vlc_inst);
@@ -179,6 +185,13 @@ time_adj_on_value_changed(GtkAdjustment *adj, gpointer user_data)
(gint64)gtk_adjustment_get_value(adj));
}
+static void
+vol_adj_on_value_changed(GtkAdjustment *adj, gpointer user_data)
+{
+ gtk_vlc_player_set_volume(GTK_VLC_PLAYER(user_data),
+ gtk_adjustment_get_value(adj));
+}
+
static inline void
update_time(GtkVlcPlayer *player, gint64 new_time)
{
@@ -298,6 +311,12 @@ gtk_vlc_player_seek(GtkVlcPlayer *player, gint64 time)
libvlc_media_player_set_time(player->media_player, (libvlc_time_t)time);
}
+void
+gtk_vlc_player_set_volume(GtkVlcPlayer *player, gdouble volume)
+{
+ libvlc_audio_set_volume(player->media_player, (int)(volume*100.));
+}
+
GtkAdjustment *
gtk_vlc_player_get_time_adjustment(GtkVlcPlayer *player)
{
@@ -311,3 +330,17 @@ gtk_vlc_player_set_time_adjustment(GtkVlcPlayer *player, GtkAdjustment *adj)
player->time_adjustment = GTK_OBJECT(adj);
gtk_object_ref(player->time_adjustment);
}
+
+GtkAdjustment *
+gtk_vlc_player_get_volume_adjustment(GtkVlcPlayer *player)
+{
+ return GTK_ADJUSTMENT(player->volume_adjustment);
+}
+
+void
+gtk_vlc_player_set_volume_adjustment(GtkVlcPlayer *player, GtkAdjustment *adj)
+{
+ gtk_object_unref(player->volume_adjustment);
+ player->volume_adjustment = GTK_OBJECT(adj);
+ gtk_object_ref(player->volume_adjustment);
+}