[Pluto-devel] Problemi con le Message Box

diego.joker@inwind.it diego.joker@inwind.it
Mon, 25 Mar 2002 10:42:17 +0100


> Ciao a tutti, volevo chiedervi un aiuto per l'utilizzo della classe
> QMessageBox di QT, all'interno di KDE. Ho un problema di visualizzazzione
> che non riesco a capire: vi riporto subito il codice e poi vi dico che
> succede.
> 
> // thread per la gestione dell' accept
> void *accept_thread(void*arg)
> {
>	 sockaddr_in from;
>	 int sockNum=3D(int)arg;
> 	int newSock;
> 	unsigned int fromLen=3Dsizeof(from);
> 	for(;;)
> 	{
>    		if (  (newSock=3D::accept(sockNum,(struct sockaddr *)&from,&fromLen))  > 0 )
>    		{
>    			char*pointer_IP=3D::inet_ntoa(from.sin_addr);
> 
> 			QString *title=3Dnew QString("CONNECTION");
>    			QString *str=3Dnew QString(" Richiesta di connessione dall'host:");
> 			QString *ip_addr=3Dnew QString(pointer_IP);
> 			str->append(*ip_addr);
> 
> 			QMessageBox ac(*title,*str,QMessageBox::Information,QMessageBox::Ok,0,0,0,0,TRUE,0);
> 			ac.exec();
> 
> 			for (int i=3D0;i<32;i++)     // i: indice di riga
> 			{
> 				if (i>31) throw;
> 				if (host[i][0]=3D=3D0)
> 				{
> 					for(int j=3D0;*pointer_IP!=3D0;j++)  // j: indice di colonna
> 					host[i][j]=3D*pointer_IP++;
> 					break;
> 				}
> 			}
>    			set_idconn(newSock);
>     		}
> 	}
> 	pthread_exit((void*)0);
> }
> 
> 
> Questa =E8 la parte di codice di un driver di comunicazione per la gestione
> delle chiamate: un thread che si occupa di gestire il loop infinito di
> accept.
> Il problema =E8 che quando mi arriva una chiamata da un'host remoto devo avere
> il modo di visualizzare tale evento e lo faccio con una message box.
> Per=F2 nel momento in cui il sistema arriva ad eseguire la linea
> 
> 	QMessageBox ac(*title,*str,QMessageBox::Information,QMessageBox::Ok,0,0,0,0,TRUE,0);
> 
> segnala il seguente errore:
> 
> 	unexpected async reply
> 
> e si blocca l'esecuzione. Sono assolutamente sicuro del fatto che il
> problema risiede nella gestione del thread perch=E8 lo stesso codice senza il
> thread funziona perfettamente.
> Non so proprio cosa fare. . .