/*****************************************************************************
* interaction.c: User interaction functions
*****************************************************************************
- * Copyright (C) 2005-2006 VideoLAN
+ * Copyright (C) 2005-2006 the VideoLAN team
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
/*****************************************************************************
* Preamble
*****************************************************************************/
+
+#include <vlc/vlc.h>
+
#include <stdlib.h> /* free(), strtol() */
#include <stdio.h> /* FILE */
#include <string.h> /* strerror() */
-#include <vlc/vlc.h>
#include <vlc/input.h>
#include <assert.h>
p_new->psz_description = strdup( psz_status );
p_new->val.f_float = f_pos;
p_new->i_timeToGo = i_time;
+ p_new->psz_alternate_button = strdup( _("Cancel" ) );
if( psz_title )
{
p_new->i_type = INTERACT_DIALOG_TWOWAY;
p_new->psz_title = strdup( psz_title );
p_new->psz_description = strdup( psz_description );
+ p_new->psz_default_button = strdup( _("Ok" ) );
+ p_new->psz_alternate_button = strdup( _("Cancel" ) );
p_new->i_flags = DIALOG_LOGIN_PW_OK_CANCEL;
i_ret = DialogSend( p_this, p_new );
- if( i_ret != DIALOG_CANCELLED )
+ if( i_ret != DIALOG_CANCELLED && i_ret != VLC_EGENERIC )
{
- assert( p_new->psz_returned[0] && p_new->psz_returned[1] );
- *ppsz_login = strdup( p_new->psz_returned[0] );
- *ppsz_password = strdup( p_new->psz_returned[1] );
+ *ppsz_login = p_new->psz_returned[0]?
+ strdup( p_new->psz_returned[0] ) : NULL;
+ *ppsz_password = p_new->psz_returned[1]?
+ strdup( p_new->psz_returned[1] ) : NULL;
}
return i_ret;
}
{
int i_ret;
DIALOG_INIT( TWOWAY );
+ p_new->i_type = INTERACT_DIALOG_TWOWAY;
p_new->psz_title = strdup( psz_title );
p_new->psz_description = strdup( psz_description );
if( i_ret != DIALOG_CANCELLED )
{
- assert( p_new->psz_returned[0] );
- *ppsz_usersString = strdup( p_new->psz_returned[0] );
+ *ppsz_usersString = p_new->psz_returned[0]?
+ strdup( p_new->psz_returned[0] ) : NULL;
}
return i_ret;
}
/* Get the interaction object. Create it if needed */
static interaction_t * InteractionGet( vlc_object_t *p_this )
{
- playlist_t *p_playlist;
interaction_t *p_interaction;
+ playlist_t *p_playlist = pl_Yield( p_this );
- p_playlist = (playlist_t*) vlc_object_find( p_this, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
- if( !p_playlist )
- return NULL;
-
+ PL_LOCK;
if( p_playlist->p_interaction == NULL )
InteractionInit( p_playlist );
p_interaction = p_playlist->p_interaction;
+ PL_UNLOCK;
- vlc_object_release( p_playlist );
+ pl_Release( p_this );
return p_interaction;
}