RKGraphicsDataStreamReadGuard () { RKGraphicsDeviceBackendTransmitter::mutex.lock (); have_lock = true; rkd_waiting_for_reply = true; QIODevice* connection = RKGraphicsDeviceBackendTransmitter::connection; BEGIN_SUSPEND_INTERRUPTS { while (connection->bytesToWrite ()) { if (!connection->waitForBytesWritten (10)) { checkHandleError (); } if (connection->bytesToWrite ()) RKREventLoop::processX11Events (); } while (!RKGraphicsDeviceBackendTransmitter::streamer.readInBuffer ()) { RKREventLoop::processX11Events (); if (!connection->waitForReadyRead (10)) { if (checkHandleInterrupt (connection)) break; checkHandleError (); } } if (R_interrupts_pending) { if (have_lock) { RKGraphicsDeviceBackendTransmitter::mutex.unlock (); have_lock = false; // Will d'tor still be called? We don't rely on it. } rkd_waiting_for_reply = false; } } END_SUSPEND_INTERRUPTS; }
qint64 QIODeviceProto::bytesToWrite() const { QIODevice *item = qscriptvalue_cast<QIODevice*>(thisObject()); if (item) return item->bytesToWrite(); return 0; }