+ else if( repeating.b_bool && !looping.b_bool )
+ {
+ /* was: Repeat One, switching to Repeat All */
+
+ /* set our button's look */
+ [self repeatAll];
+
+ /* prepare core communication */
+ repeating.b_bool = false;
+ looping.b_bool = true;
+ config_PutInt( p_playlist, "repeat", 0 );
+ config_PutInt( p_playlist, "loop", 1 );
+
+ /* show the change */
+ vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat All" ) );
+ }
+ else
+ {
+ /* was: Repeat All or bug in VLC, switching to Repeat Off */
+
+ /* set our button's look */
+ [self repeatOff];
+
+ /* prepare core communication */
+ repeating.b_bool = false;
+ looping.b_bool = false;
+ config_PutInt( p_playlist, "repeat", 0 );
+ config_PutInt( p_playlist, "loop", 0 );
+
+ /* show the change */
+ vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat Off" ) );
+ }
+
+ /* communicate with core and the main intf loop */
+ var_Set( p_playlist, "repeat", repeating );
+ var_Set( p_playlist, "loop", looping );
+ p_intf->p_sys->b_playmode_update = true;
+ p_intf->p_sys->b_intf_update = true;
+
+ vlc_object_release( p_playlist );
+}
+
+
+- (IBAction)repeat:(id)sender
+{
+ vlc_value_t val;
+ intf_thread_t * p_intf = VLCIntf;
+ playlist_t * p_playlist = pl_Yield( p_intf );