aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-07 04:14:47 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-07 04:14:47 +0200
commit9af36f0461bbdd1cc627cafbf470a67689c4fdbc (patch)
tree583659bfec9fa1fa03a1ff51747918fc25c2e23b
parentef36b6db09265b1b3110d7596de3ad8385fcfbe5 (diff)
downloadgtk-vlc-player-9af36f0461bbdd1cc627cafbf470a67689c4fdbc.tar.gz
fixed vlc player widget's _set_adjustment functions
care about disconnecting and reconnecting signal handlers
-rw-r--r--lib/gtk-vlc-player/gtk-vlc-player.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/gtk-vlc-player/gtk-vlc-player.c b/lib/gtk-vlc-player/gtk-vlc-player.c
index 136310c..fec9adf 100644
--- a/lib/gtk-vlc-player/gtk-vlc-player.c
+++ b/lib/gtk-vlc-player/gtk-vlc-player.c
@@ -326,9 +326,16 @@ gtk_vlc_player_get_time_adjustment(GtkVlcPlayer *player)
void
gtk_vlc_player_set_time_adjustment(GtkVlcPlayer *player, GtkAdjustment *adj)
{
+ g_signal_handler_disconnect(G_OBJECT(player->time_adjustment),
+ player->time_adj_on_value_changed_id);
+
gtk_object_unref(player->time_adjustment);
player->time_adjustment = GTK_OBJECT(adj);
gtk_object_ref(player->time_adjustment);
+
+ player->time_adj_on_value_changed_id =
+ g_signal_connect(G_OBJECT(player->time_adjustment), "value-changed",
+ G_CALLBACK(time_adj_on_value_changed), player);
}
GtkAdjustment *
@@ -340,7 +347,14 @@ gtk_vlc_player_get_volume_adjustment(GtkVlcPlayer *player)
void
gtk_vlc_player_set_volume_adjustment(GtkVlcPlayer *player, GtkAdjustment *adj)
{
+ g_signal_handler_disconnect(G_OBJECT(player->volume_adjustment),
+ player->vol_adj_on_value_changed_id);
+
gtk_object_unref(player->volume_adjustment);
player->volume_adjustment = GTK_OBJECT(adj);
gtk_object_ref(player->volume_adjustment);
+
+ player->vol_adj_on_value_changed_id =
+ g_signal_connect(G_OBJECT(player->volume_adjustment), "value-changed",
+ G_CALLBACK(vol_adj_on_value_changed), player);
}