File tree Expand file tree Collapse file tree 3 files changed +36
-20
lines changed
Expand file tree Collapse file tree 3 files changed +36
-20
lines changed Original file line number Diff line number Diff line change 11Release Highlights
22==================
33
4+ Version 3.2.2
5+ -------------
6+ * Fix GammaRay GUI not showing up on Windows
7+
48Version 3.2.1
59-------------
610 * Fix infinite in loop QuickSceneGraphModel::itemForSgNode() (#1070)
Original file line number Diff line number Diff line change @@ -144,6 +144,16 @@ void ProbeSettingsReceiver::readyRead()
144144 }
145145}
146146
147+ static void waitForBytesWritten (QLocalSocket &socket)
148+ {
149+ while (socket.state () == QLocalSocket::ConnectedState && socket.bytesToWrite () > 0 ) {
150+ if (!socket.waitForBytesWritten ()) {
151+ qWarning () << Q_FUNC_INFO << " Failed to wait for bytes written" ;
152+ break ;
153+ }
154+ }
155+ }
156+
147157void ProbeSettingsReceiver::sendServerAddress (const QUrl &address)
148158{
149159 if (!m_socket || m_socket->state () != QLocalSocket::ConnectedState)
@@ -153,7 +163,7 @@ void ProbeSettingsReceiver::sendServerAddress(const QUrl &address)
153163 msg << address;
154164 msg.write (m_socket);
155165
156- m_socket-> waitForBytesWritten ();
166+ waitForBytesWritten (*m_socket );
157167 m_socket->close ();
158168
159169 deleteLater ();
@@ -170,7 +180,7 @@ void ProbeSettingsReceiver::sendServerLaunchError(const QString &reason)
170180 msg << reason;
171181 msg.write (m_socket);
172182
173- m_socket-> waitForBytesWritten ();
183+ waitForBytesWritten (*m_socket );
174184 m_socket->close ();
175185
176186 deleteLater ();
Original file line number Diff line number Diff line change @@ -357,26 +357,28 @@ void Launcher::newConnection()
357357
358358void Launcher::readyRead ()
359359{
360- while (Message::canReadMessage (d->socket )) {
361- const auto msg = Message::readMessage (d->socket );
362- switch (msg.type ()) {
363- case Protocol::ServerAddress: {
364- msg >> d->serverAddress ;
365- break ;
366- }
367- case Protocol::ServerLaunchError: {
368- QString reason;
369- msg >> reason;
370- std::cerr << " Failed to start server: " << qPrintable (reason)
371- << std::endl;
372- // TODO emit error signal to also notify qtcreator, etc
373- break ;
374- }
375- default :
376- continue ;
377- }
360+ if (!Message::canReadMessage (d->socket )) {
361+ // it's a partial write, wait for rest of message
362+ return ;
378363 }
379364
365+ const auto msg = Message::readMessage (d->socket );
366+ switch (msg.type ()) {
367+ case Protocol::ServerAddress: {
368+ msg >> d->serverAddress ;
369+ break ;
370+ }
371+ case Protocol::ServerLaunchError: {
372+ QString reason;
373+ msg >> reason;
374+ std::cerr << " Failed to start server: " << qPrintable (reason)
375+ << std::endl;
376+ // TODO emit error signal to also notify qtcreator, etc
377+ break ;
378+ }
379+ }
380+
381+
380382 if (d->serverAddress .isEmpty ())
381383 return ;
382384
You can’t perform that action at this time.
0 commit comments