domingo, 3 de julio de 2011

Arreglado el envío de señales entre threads!

En mi trabajo hemos estado persiguiendo durante algún tiempo un problema en el que el thread T1 emitía la señal S1 y después la señal S2 que estaban conectadas a un objeto en el thread T2, eran recibidas en dicho objeto en el orden inverso, es decir, S2 primero y S1 después.

Primero pensamos que era nuestra culpa ya que el código en esas clases no es tan limpio como debería ser, pero después de unos días no encontramos nada especialmente incorrecto en nuestro código y comenzamos a mirar en dirección Qt.

Solo en un dia encontré un problema en QObject::moveToThread que no dejaba los items de QPostEventList correctamente ordenados y fui capaz de producir un parche rápido para solucionar nuestro problema. Por desgracia, ha tomado alrededor de un mes para que el parche llegue a Qt (ni idea si la lentitud es culpa de mi empresa, Digia o Nokia) y el error haya sido corregido por Olivier (con un parche mejor que el mío).

Conclusión: Si no encuentras un error en tu código, a veces es porque no está ahí :D

No hay comentarios:

Publicar un comentario