+ }
+ vlc_list_release( p_list );
+
+ var_AddCallback( p_intf, "intf-switch", SwitchIntfCallback, NULL );
+
+ /* Variable used for interface spawning */
+ var_Create( p_intf, "intf-add", VLC_VAR_STRING |
+ VLC_VAR_HASCHOICE | VLC_VAR_ISCOMMAND );
+ text.psz_string = _("Add Interface");
+ var_Change( p_intf, "intf-add", VLC_VAR_SETTEXT, &text, NULL );
+
+ val.psz_string = (char *)"rc"; text.psz_string = (char *)"Console";
+ var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
+ val.psz_string = (char *)"telnet";
+ text.psz_string = (char *)_("Telnet Interface");
+ var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
+ val.psz_string = (char *)"http";
+ text.psz_string = (char *)_("Web Interface");
+ var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
+ val.psz_string = (char *)"logger";
+ text.psz_string = (char *)_("Debug logging");
+ var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
+ val.psz_string = (char *)"gestures";
+ text.psz_string = (char *)_("Mouse Gestures");
+ var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
+
+ var_AddCallback( p_intf, "intf-add", AddIntfCallback, NULL );
+
+ do
+ {
+ /* Give control to the interface */
+ p_intf->pf_run( p_intf );
+
+ /* Reset play on start status */
+ p_intf->b_play = VLC_FALSE;
+
+ if( !p_intf->psz_switch_intf )
+ {
+ break;
+ }
+
+ /* Make sure the old interface is completely uninitialized */
+ module_Unneed( p_intf, p_intf->p_module );
+
+ /* Provide ability to switch the main interface on the fly */
+ psz_intf = p_intf->psz_switch_intf;
+ p_intf->psz_switch_intf = NULL;
+
+ vlc_mutex_lock( &p_intf->object_lock );
+ p_intf->b_die = VLC_FALSE;
+ p_intf->b_dead = VLC_FALSE;
+ vlc_mutex_unlock( &p_intf->object_lock );