+ int i;
+ vlc_bool_t b_found = VLC_FALSE;
+ vlc_mutex_lock( &p_interact->object_lock );
+ for( i = 0 ; i< p_interact->i_dialogs; i++ )
+ {
+ if( p_interact->pp_dialogs[i]->i_id == p_dialog->i_id )
+ {
+ b_found = VLC_TRUE;
+ }
+ }
+ if( ! b_found )
+ {
+ INSERT_ELEM( p_interact->pp_dialogs,
+ p_interact->i_dialogs,
+ p_interact->i_dialogs,
+ p_dialog );
+ }
+ else
+ p_dialog->i_status = UPDATED_DIALOG;
+ vlc_mutex_unlock( &p_interact->object_lock );
+
+ /// \todo Check that the initiating object is not dying
+ while( p_dialog->i_status != ANSWERED_DIALOG &&
+ p_dialog->i_status != HIDING_DIALOG &&
+ !p_dialog->p_parent->b_die )
+ {
+ msleep( 100000 );
+ }
+ /// \todo locking
+ 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;
+ return p_dialog->i_return;