* Preamble
*****************************************************************************/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <vlc/vlc.h>
#include <stdlib.h> /* free(), strtol() */
#include <stdio.h> /* FILE */
-#include <string.h> /* strerror() */
-
-#include <vlc/input.h>
-#include <assert.h>
+#include <string.h>
-#include "vlc_interaction.h"
-#include "vlc_interface.h"
-#include "vlc_playlist.h"
+#include <vlc_interface.h>
+#include <vlc_playlist.h>
+#include "interface.h"
/*****************************************************************************
* Local prototypes
DialogDestroy( p_dialog );
REMOVE_ELEM( p_interaction->pp_dialogs, p_interaction->i_dialogs, i );
}
- vlc_object_destroy( p_interaction );
+ vlc_object_release( p_interaction );
}
/**
// Pretend we have hidden and destroyed it
if( p_dialog->i_status == HIDDEN_DIALOG )
- {
p_dialog->i_status = DESTROYED_DIALOG;
- }
else
- {
p_dialog->i_status = HIDING_DIALOG;
- }
}
}
else
- {
vlc_object_yield( p_interaction->p_intf );
- }
for( i_index = 0 ; i_index < p_interaction->i_dialogs; i_index ++ )
{
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" ) );
+ p_new->psz_alternate_button = strdup( _( "Cancel" ) );
if( psz_title )
{
return;
}
- FREE( p_dialog->psz_description );
+ free( p_dialog->psz_description );
p_dialog->psz_description = strdup( psz_status );
p_dialog->val.f_float = f_pos;
p_dialog->i_status = UPDATED_DIALOG;
vlc_mutex_unlock( &p_interaction->object_lock) ;
+
+ playlist_Signal( pl_Get( p_this ) );
}
/** Helper function to communicate dialogue cancellations between the
{
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;
}
return;
}
+ p_interaction->psz_object_name = "interaction";
p_interaction->i_dialogs = 0;
p_interaction->pp_dialogs = NULL;
p_interaction->p_intf = NULL;
- p_interaction->i_last_id = DIALOG_LAST_PREDEFINED + 1;
+ p_interaction->i_last_id = 0;
vlc_mutex_init( p_interaction , &p_interaction->object_lock );
-
p_playlist->p_interaction = p_interaction;
}
/* Destroy a dialog */
static void DialogDestroy( interaction_dialog_t *p_dialog )
{
- FREENULL( p_dialog->psz_title );
- FREENULL( p_dialog->psz_description );
- FREENULL( p_dialog->psz_default_button );
- FREENULL( p_dialog->psz_alternate_button );
- FREENULL( p_dialog->psz_other_button );
+ free( p_dialog->psz_title );
+ free( p_dialog->psz_description );
+ free( p_dialog->psz_default_button );
+ free( p_dialog->psz_alternate_button );
+ free( p_dialog->psz_other_button );
free( p_dialog );
}
if( p_dialog->i_type == INTERACT_DIALOG_TWOWAY ) // Wait for answer
{
+ playlist_Signal( pl_Get( p_this ) );
while( p_dialog->i_status != ANSWERED_DIALOG &&
p_dialog->i_status != HIDING_DIALOG &&
p_dialog->i_status != HIDDEN_DIALOG &&
}
p_dialog->i_flags |= DIALOG_GOT_ANSWER;
vlc_mutex_unlock( &p_interaction->object_lock );
+ playlist_Signal( pl_Get( p_this ) );
return p_dialog->i_return;
}
else
// Pretend we already retrieved the "answer"
p_dialog->i_flags |= DIALOG_GOT_ANSWER;
vlc_mutex_unlock( &p_interaction->object_lock );
+ playlist_Signal( pl_Get( p_this ) );
return VLC_SUCCESS;
}
}