+ if( p_interaction->pp_dialogs[i]->i_id == p_dialog->i_id )
+ b_found = VLC_TRUE;
+ }
+ /* Add it to the queue, the main loop will send the orders to the
+ * interface */
+ if( ! b_found )
+ {
+ INSERT_ELEM( p_interaction->pp_dialogs,
+ p_interaction->i_dialogs,
+ p_interaction->i_dialogs,
+ p_dialog );
+ }
+ else
+ p_dialog->i_status = UPDATED_DIALOG;
+
+ if( p_dialog->i_type == INTERACT_DIALOG_TWOWAY ) // Wait for answer
+ {
+ while( p_dialog->i_status != ANSWERED_DIALOG &&
+ p_dialog->i_status != HIDING_DIALOG &&
+ p_dialog->i_status != HIDDEN_DIALOG &&
+ !p_dialog->p_parent->b_die )
+ {
+ vlc_mutex_unlock( &p_interaction->object_lock );
+ msleep( 100000 );
+ vlc_mutex_lock( &p_interaction->object_lock );
+ }
+ if( p_dialog->p_parent->b_die )
+ {
+ p_dialog->i_return = DIALOG_CANCELLED;
+ p_dialog->i_status = ANSWERED_DIALOG;
+ }
+ p_dialog->i_flags |= DIALOG_GOT_ANSWER;
+ vlc_mutex_unlock( &p_interaction->object_lock );
+ 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 );
+ return VLC_SUCCESS;