diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-05-07 04:14:47 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-05-07 04:14:47 +0200 |
commit | 9af36f0461bbdd1cc627cafbf470a67689c4fdbc (patch) | |
tree | 583659bfec9fa1fa03a1ff51747918fc25c2e23b /lib/gtk-vlc-player/gtk-vlc-player.c | |
parent | ef36b6db09265b1b3110d7596de3ad8385fcfbe5 (diff) | |
download | experiment-player-9af36f0461bbdd1cc627cafbf470a67689c4fdbc.tar.gz |
fixed vlc player widget's _set_adjustment functions
care about disconnecting and reconnecting signal handlers
Diffstat (limited to 'lib/gtk-vlc-player/gtk-vlc-player.c')
-rw-r--r-- | lib/gtk-vlc-player/gtk-vlc-player.c | 14 |
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); } |