diff options
author | Jesus Fernandez <jesus.fernandez@qt.io> | 2018-03-20 16:52:27 +0100 |
---|---|---|
committer | Jesus Fernandez <Jesus.Fernandez@qt.io> | 2018-03-27 12:21:27 +0000 |
commit | 3d0c6d7e9dccf8e9e19719c3adacf981825be93d (patch) | |
tree | a4035cfc2ae203816c00c33d2602adccc37cf521 /src | |
parent | 50a4e6758786b0946b05327af7a3642121e5cff3 (diff) |
Remove old partial binary message workaround
The original implementation of the plugin was created using Qt 5.8. A
workaround was added to avoid partial binary messages.
Apparently, this is not happening anymore, so the workaround is not
needed anymore.
Removing the workaround can provide a performance boost since the
application sends the binary message in a single message and the
browser does not need to rebuild the message.
Change-Id: I18e7a1c559d8a5d677ab66131098a6a1e855d985
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/platforms/webgl/qwebglwebsocketserver.cpp | 9 | ||||
-rw-r--r-- | src/plugins/platforms/webgl/webqt.jsx | 25 |
2 files changed, 6 insertions, 28 deletions
diff --git a/src/plugins/platforms/webgl/qwebglwebsocketserver.cpp b/src/plugins/platforms/webgl/qwebglwebsocketserver.cpp index ed7a4d6..1c1e6a1 100644 --- a/src/plugins/platforms/webgl/qwebglwebsocketserver.cpp +++ b/src/plugins/platforms/webgl/qwebglwebsocketserver.cpp @@ -203,14 +203,7 @@ void QWebGLWebSocketServer::sendMessage(QWebSocket *socket, serialize(parameters); stream << (quint32)0xbaadf00d; } - const quint32 totalMessageSize = data.size(); - const quint32 maxMessageSize = 1024; - for (quint32 i = 0; i <= data.size() / maxMessageSize; ++i) { - const quint32 offset = i * maxMessageSize; - const quint32 size = qMin(totalMessageSize - offset, maxMessageSize); - const auto chunk = QByteArray::fromRawData(data.constData() + offset, size); - socket->sendBinaryMessage(chunk); - } + socket->sendBinaryMessage(data); return; } case MessageType::CreateCanvas: diff --git a/src/plugins/platforms/webgl/webqt.jsx b/src/plugins/platforms/webgl/webqt.jsx index 6a4e942..4c8f3a3 100644 --- a/src/plugins/platforms/webgl/webqt.jsx +++ b/src/plugins/platforms/webgl/webqt.jsx @@ -48,7 +48,6 @@ window.onload = function () { var SWAP_DELAY = 16; //${swap_delay}; var contextData = { }; // context -> { shaderMap, programMap, ... } var currentContext = 0; - var binaryDataBuffer = new Uint8Array(0); var currentWindowId = ""; var windowData = {}; var currentZIndex = 1; @@ -916,21 +915,7 @@ window.onload = function () { }; var handleBinaryMessage = function (event) { - var appendBuffer = function(buffer1, buffer2) { - var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength); - tmp.set(new Uint8Array(buffer1), 0); - tmp.set(new Uint8Array(buffer2), buffer1.byteLength); - return tmp.buffer; - }; - - var buffer = appendBuffer(binaryDataBuffer, event.data); - var view = new DataView(buffer); - if (view.getUint32(buffer.byteLength - 4) !== 0xbaadf00d) { - binaryDataBuffer = buffer; - return; - } - binaryDataBuffer = new ArrayBuffer(0); - + var view = new DataView(event.data); var offset = 0; var obj = { "parameters" : [] }; obj["function"] = supportedFunctions[view.getUint8(offset)]; @@ -948,7 +933,7 @@ window.onload = function () { else obj["parameterCount"] = gl[obj["function"]].length; function deserialize(container, count) { - for (var i = 0; count != null ? i < count : offset + 4 < buffer.byteLength; ++i) { + for (var i = 0; count != null ? i < count : offset + 4 < event.data.byteLength; ++i) { var character = view.getUint8(offset); offset += 1; var parameterType = String.fromCharCode(character); @@ -968,13 +953,13 @@ window.onload = function () { } else if (parameterType === 's') { var stringSize = view.getUint32(offset); offset += 4; - var string = textDecoder.decode(new Uint8Array(buffer, offset, stringSize)); + var string = textDecoder.decode(new Uint8Array(event.data, offset, stringSize)); container.push(string); offset += stringSize; } else if (parameterType === 'x') { var dataSize = view.getUint32(offset); offset += 4; - var data = new Uint8Array(buffer, offset, dataSize); + var data = new Uint8Array(event.data, offset, dataSize); var bytesRead = data.byteLength; if (bytesRead !== dataSize) console.error("invalid data"); @@ -996,7 +981,7 @@ window.onload = function () { if (magic !== 0xbaadf00d) // sentinel expected at end of buffer console.error('Invalid magic'); offset += 4; - if (offset !== buffer.byteLength) + if (offset !== event.data.byteLength) console.error("Invalid buffer"); if (!("function" in obj)) { |