Bonjour à tous et à toutes !!!!!
Je suis en train de créer un programme avec lequel j'inclus un lecteur musique et c'est pour cela que j'utilise FMOD.
Mon lecteur marche très bien mais il y a quand même un problème : mon programme ne veut plus executer d'autres fonctions !!!
Par exemple j'ai une fonction quio demande si l'on veut quitter le programme. Si l'on clique OUI, le prog. ferme (gtk_main_quit) et sinon il detruit la boite de dialogue normalement. Et beh quand le lecteur joue le prog. veut pas fermer...
Ou alors j'utilise des scrollbar à un textview et lorsque le lecteur joue et que j'insere un très long texte, le scrollbarre n'augmente pas, comme si j'avais rien mis comme texte...
Ce ne sont pas les seuls exemples mais ceux qui m'embete le plus quand le lecteur joue ...
Pour FMOD je suis obligé d'utiliser une boucle qui bloque mon programme si je n'inclus pas "gtk_main_iteration();"

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
     while(Chanson_courante <= g_list_length(Liste_musique) && Stop == FALSE)
     {
          FSOUND_Init(44100, 32, 0); 
          FSOUND_SetVolume(FSOUND_ALL, 255);
          FSOUND_STREAM *Musique = NULL;
          gchar* Message, *Temp;
          Message = (gchar *) g_list_nth_data(Liste_musique, Chanson_courante-1);
          Temp = g_locale_from_utf8( str_replace(Message, "\\", "\\\\"), -1, NULL, NULL, NULL);
          gtk_main_iteration();
          Musique = FSOUND_Stream_Open(g_strdup(Temp), 0, 0, 0);//g_strdup(str_replace(Message, "\\", "\\\\")), 0, 0, 0);
 
         if(Musique != NULL)
          {
 
               FSOUND_Stream_Play(FSOUND_FREE, Musique);                  
 
               i = 0, y = 0;
               y = FSOUND_Stream_GetLengthMs(Musique);
 
 
                while(i < y && Stop == FALSE)
               {     
                     i = FSOUND_Stream_GetTime(Musique);
                     Fraction = (gdouble)i / (gdouble)y;
                     gtk_progress_bar_set_text(GTK_PROGRESS_BAR(data), g_strdup_printf("%s - %s / %s", g_path_get_basename(Message), MiseForme_Heure(i), MiseForme_Heure(y))); 
                     gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(data), Fraction);                  
                     gtk_main_iteration();     
               }
 
               FSOUND_Stream_Close(Musique);             
               Chanson_courante++;       
 
           }
 
           else
           {
 
               GtkWidget *Dialogue;
               Dialogue = gtk_message_dialog_new(NULL,
                                                 GTK_DIALOG_MODAL,
                                                 GTK_MESSAGE_WARNING,
                                                 GTK_BUTTONS_OK,
                                                 g_locale_to_utf8("Le lecteur musique ne peut pas joué la musique suivante. Cette musique n'est probablement pas au bon format ou bien elle a été déplacé ou supprimé !\nVoici le repertoire de destination que nous avons dans nos fichiers : \n%s", -1, NULL, NULL, NULL), Message);    
               gdk_beep();
               gtk_dialog_run(GTK_DIALOG(Dialogue));
               gtk_widget_destroy(Dialogue);
 
               FSOUND_Stream_Close(Musique); 
               Chanson_courante++;
           }      
       gtk_progress_bar_set_text(GTK_PROGRESS_BAR(data), ""); 
       gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(data), (gdouble) 0); 
 
       }
str_replace est une fonction que j'ai inventé
Liste_Musique, Stop et Chanson_courante sont des variables statiques qui servent à mon lecteur

Vola j'espere que vous pourrez m'aider !!!!
Merci d'avance pour vos réponses ^^