void QBBVirtualKeyboard::close() { if (mFd) { // any reads will fail after we close the fd, which is basically what we want. ::close(mFd); } // Wait for the thread to die (should be immediate), then continue the cleanup. wait(); if (mFd) { mFd = -1; } if(mDecoder) { pps_decoder_cleanup(mDecoder); delete mDecoder; mDecoder = NULL; } if(mEncoder) { pps_encoder_cleanup(mEncoder); delete mEncoder; mEncoder = NULL; } delete [] mBuffer; mBuffer = NULL; }
void QQnxVirtualKeyboardPps::close() { delete m_readNotifier; m_readNotifier = 0; if (m_fd != -1) { ::close(m_fd); m_fd = -1; } if (m_decoder) { pps_decoder_cleanup(m_decoder); delete m_decoder; m_decoder = 0; } if (m_encoder) { pps_encoder_cleanup(m_encoder); delete m_encoder; m_encoder = 0; } delete [] m_buffer; m_buffer = 0; }
bool endCtrlMessage(pps_encoder_t *encoder) { qCDebug(QT_BT_QNX) << "writing" << pps_encoder_buffer(encoder); if (pps_encoder_buffer(encoder) != 0) { int res = qt_safe_write(ppsCtrlFD, pps_encoder_buffer(encoder), pps_encoder_length(encoder)); if (res == -1) { qCWarning(QT_BT_QNX) << Q_FUNC_INFO << "Error when writing to control FD. Is Bluetooth powerd on?" << errno << ppsCtrlFD << count; return false; } } pps_encoder_cleanup( encoder ); return true; }
QByteArray QPpsObjectPrivate::encode(const QVariantMap &ppsData, bool *ok) { pps_encoder_t encoder; pps_encoder_initialize(&encoder, false); encodeObject(&encoder, ppsData, ok); const char *rawData = 0; if (*ok) { // rawData points to a memory owned by encoder. // The memory will be freed when pps_encoder_cleanup is called. rawData = pps_encoder_buffer(&encoder); if (!rawData) { qWarning() << "QPpsObjectPrivate::encode: pps_encoder_buffer failed"; *ok = false; } } pps_encoder_cleanup(&encoder); return QByteArray(rawData); }