From 5f7c4278b872ca0a843b2fe7e30ac6627672b78e Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 9 Feb 2015 13:01:38 -0800 Subject: [PATCH 01/11] handle custom domain-server port if it is present --- libraries/networking/src/AddressManager.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libraries/networking/src/AddressManager.cpp b/libraries/networking/src/AddressManager.cpp index 9d947dd24a..9bcdcbe9a4 100644 --- a/libraries/networking/src/AddressManager.cpp +++ b/libraries/networking/src/AddressManager.cpp @@ -202,14 +202,19 @@ void AddressManager::goToAddressFromObject(const QVariantMap& dataObject, const if (!domainObject.isEmpty()) { const QString DOMAIN_NETWORK_ADDRESS_KEY = "network_address"; + const QString DOMAIN_NETWORK_PORT_KEY = "network_port"; const QString DOMAIN_ICE_SERVER_ADDRESS_KEY = "ice_server_address"; if (domainObject.contains(DOMAIN_NETWORK_ADDRESS_KEY)) { QString domainHostname = domainObject[DOMAIN_NETWORK_ADDRESS_KEY].toString(); + quint16 domainPort = domainObject.contains(DOMAIN_NETWORK_PORT_KEY) + ? domainObject[DOMAIN_NETWORK_PORT_KEY].toUInt() + : DEFAULT_DOMAIN_SERVER_PORT; + qDebug() << "Possible domain change required to connect to" << domainHostname - << "on" << DEFAULT_DOMAIN_SERVER_PORT; - emit possibleDomainChangeRequired(domainHostname, DEFAULT_DOMAIN_SERVER_PORT); + << "on" << domainPort; + emit possibleDomainChangeRequired(domainHostname, domainPort); } else { QString iceServerAddress = domainObject[DOMAIN_ICE_SERVER_ADDRESS_KEY].toString(); From ea33c66681ccaef2ead76ea2b10ede307353c67e Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 9 Feb 2015 15:04:43 -0800 Subject: [PATCH 02/11] fix formating issue in performance stats --- interface/src/ui/Stats.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index 2f08238c32..ca4a88600e 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -271,7 +271,7 @@ void Stats::display( // TODO: the display of these timing details should all be moved to JavaScript if (_expanded && Menu::getInstance()->isOptionChecked(MenuOption::DisplayTimingDetails)) { // Timing details... - verticalOffset += STATS_PELS_PER_LINE * 4; // skip 4 lines to be under the other columns + verticalOffset += STATS_PELS_PER_LINE * 6; // skip 6 lines to be under the other columns drawText(columnOneHorizontalOffset, verticalOffset, scale, rotation, font, "-------------------------------------------------------- Function " "------------------------------------------------------- --msecs- -calls--", color); @@ -294,13 +294,14 @@ void Stats::display( j.toBack(); while (j.hasPrevious()) { j.previous(); + QChar noBreakingSpace = QChar::Nbsp; QString functionName = j.value(); const PerformanceTimerRecord& record = allRecords.value(functionName); QString perfLine = QString("%1: %2 [%3]"). - arg(QString(qPrintable(functionName)), 120). - arg((float)record.getMovingAverage() / (float)USECS_PER_MSEC, 8, 'f', 3). - arg(record.getCount(), 6); + arg(QString(qPrintable(functionName)), 120, noBreakingSpace). + arg((float)record.getMovingAverage() / (float)USECS_PER_MSEC, 8, 'f', 3, noBreakingSpace). + arg((int)record.getCount(), 6, 10, noBreakingSpace); verticalOffset += STATS_PELS_PER_LINE; drawText(columnOneHorizontalOffset, verticalOffset, scale, rotation, font, perfLine.toUtf8().constData(), color); From 2f981686fab790cc844bab91e77948e153eed741 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 9 Feb 2015 15:38:50 -0800 Subject: [PATCH 03/11] fix bad colors on windows --- interface/src/Util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Util.cpp b/interface/src/Util.cpp index 44a6ec666a..da4ada2dc2 100644 --- a/interface/src/Util.cpp +++ b/interface/src/Util.cpp @@ -111,7 +111,7 @@ void drawText(int x, int y, float scale, float radians, int mono, glRotated(double(radians * DEGREES_PER_RADIAN), 0.0, 0.0, 1.0); glScalef(scale / 0.1f, scale / 0.1f, 1.0f); - glm::vec4 colorV4 = {color[0], color[1], color[3], 1.0f }; + glm::vec4 colorV4 = {color[0], color[1], color[2], 1.0f }; textRenderer(mono)->draw(0, 0, string, colorV4); glPopMatrix(); } From 4fa2b3a6e99bbb11abc68d1b1e87a6c71cc09f54 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 9 Feb 2015 22:07:12 -0800 Subject: [PATCH 04/11] Fix maximized Windows window unintentionally changing to windowed This stops a maximized Windows window changing to being windowed when you click on a menu item. --- interface/src/Application.cpp | 13 +++++++++++-- interface/src/Application.h | 2 ++ interface/src/main.cpp | 3 +-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 95b8cbb835..aa24711509 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -156,18 +156,27 @@ public: bool nativeEventFilter(const QByteArray &eventType, void* msg, long* result) Q_DECL_OVERRIDE { if (eventType == "windows_generic_MSG") { MSG* message = (MSG*)msg; + if (message->message == UWM_IDENTIFY_INSTANCES) { *result = UWM_IDENTIFY_INSTANCES; return true; } - if (message->message == WM_SHOWWINDOW) { - Application::getInstance()->getWindow()->showNormal(); + + if (message->message == UWM_SHOW_APPLICATION) { + MainWindow* applicationWindow = Application::getInstance()->getWindow(); + if (applicationWindow->isMinimized()) { + applicationWindow->showNormal(); // Restores to windowed or maximized state appropriately. + } + Application::getInstance()->setActiveWindow(applicationWindow); // Flashes the taskbar icon if not focus. + return true; } + if (message->message == WM_COPYDATA) { COPYDATASTRUCT* pcds = (COPYDATASTRUCT*)(message->lParam); QUrl url = QUrl((const char*)(pcds->lpData)); if (url.isValid() && url.scheme() == HIFI_URL_SCHEME) { DependencyManager::get()->handleLookupString(url.toString()); + return true; } } } diff --git a/interface/src/Application.h b/interface/src/Application.h index e131766309..d015d09035 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -117,6 +117,8 @@ static const QString INFO_EDIT_ENTITIES_PATH = "html/edit-entities-commands.html #ifdef Q_OS_WIN static const UINT UWM_IDENTIFY_INSTANCES = RegisterWindowMessage("UWM_IDENTIFY_INSTANCES_{8AB82783-B74A-4258-955B-8188C22AA0D6}"); +static const UINT UWM_SHOW_APPLICATION = + RegisterWindowMessage("UWM_SHOW_APPLICATION_{71123FD6-3DA8-4DC1-9C27-8A12A6250CBA}"); #endif class Application; diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 4881bd4ff4..61278821ee 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -46,8 +46,7 @@ int main(int argc, const char * argv[]) { HWND otherInstance = NULL; EnumWindows(enumWindowsCallback, (LPARAM)&otherInstance); if (otherInstance) { - ShowWindow(otherInstance, SW_RESTORE); - SetForegroundWindow(otherInstance); + SendMessage(otherInstance, UWM_SHOW_APPLICATION, 0, 0); QUrl url = QUrl(argv[1]); if (url.isValid() && url.scheme() == HIFI_URL_SCHEME) { From 45c0d0e6a963d3def1e2e59d6ee50f9d996ac6ec Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 9 Feb 2015 23:50:43 -0800 Subject: [PATCH 05/11] Fix Windows --url command line parameter handling --- interface/src/main.cpp | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 61278821ee..64ecb2b9e7 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -8,6 +8,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include #include #include #include @@ -36,7 +37,7 @@ static BOOL CALLBACK enumWindowsCallback(HWND hWnd, LPARAM lParam) { #endif -int main(int argc, const char * argv[]) { +int main(int argc, const char* argv[]) { #ifdef Q_OS_WIN // Run only one instance of Interface at a time. HANDLE mutex = CreateMutex(NULL, FALSE, "High Fidelity Interface"); @@ -46,14 +47,32 @@ int main(int argc, const char * argv[]) { HWND otherInstance = NULL; EnumWindows(enumWindowsCallback, (LPARAM)&otherInstance); if (otherInstance) { + // Show other instance. SendMessage(otherInstance, UWM_SHOW_APPLICATION, 0, 0); - QUrl url = QUrl(argv[1]); - if (url.isValid() && url.scheme() == HIFI_URL_SCHEME) { - COPYDATASTRUCT cds; - cds.cbData = strlen(argv[1]) + 1; - cds.lpData = (PVOID)argv[1]; - SendMessage(otherInstance, WM_COPYDATA, 0, (LPARAM)&cds); + // Send command line --url value to other instance. + if (argc >= 3) { + QStringList arguments; + for (int i = 0; i < argc; i += 1) { + arguments << argv[i]; + } + + QCommandLineParser parser; + QCommandLineOption urlOption("url", "", "value"); + parser.addOption(urlOption); + parser.process(arguments); + + if (parser.isSet(urlOption)) { + QUrl url = QUrl(parser.value(urlOption)); + if (url.isValid() && url.scheme() == HIFI_URL_SCHEME) { + QByteArray urlBytes = url.toString().toLatin1(); + const char* urlChars = urlBytes.data(); + COPYDATASTRUCT cds; + cds.cbData = urlBytes.length() + 1; + cds.lpData = (PVOID)urlChars; + SendMessage(otherInstance, WM_COPYDATA, 0, (LPARAM)&cds); + } + } } } return 0; From 7ac3bd3ee862cfcb9ab971748e8cec5c28a76033 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 10 Feb 2015 09:02:53 -0800 Subject: [PATCH 06/11] Add padding to buttons in entity list --- examples/html/entityList.html | 2 +- examples/html/style.css | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/html/entityList.html b/examples/html/entityList.html index 01061f1eb0..9a910b40d3 100644 --- a/examples/html/entityList.html +++ b/examples/html/entityList.html @@ -168,7 +168,7 @@ -
+
diff --git a/examples/html/style.css b/examples/html/style.css index 8b52447ea2..d7ff8d6ff6 100644 --- a/examples/html/style.css +++ b/examples/html/style.css @@ -86,6 +86,10 @@ input[type=button] { font-weight: bold; } +#entity-list-header { + padding: 0.5em; +} + textarea, input { margin: 0; padding: 1.5pt; From 8d65caaaefb5fbfdce04c03a31272684d305a6f0 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 10 Feb 2015 09:03:21 -0800 Subject: [PATCH 07/11] Update entity list search input to be full width with margin --- examples/html/entityList.html | 4 +++- examples/html/style.css | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/examples/html/entityList.html b/examples/html/entityList.html index 9a910b40d3..bbfa4d81b8 100644 --- a/examples/html/entityList.html +++ b/examples/html/entityList.html @@ -175,7 +175,9 @@
- +
+ +
diff --git a/examples/html/style.css b/examples/html/style.css index d7ff8d6ff6..254c6545d6 100644 --- a/examples/html/style.css +++ b/examples/html/style.css @@ -90,6 +90,16 @@ input[type=button] { padding: 0.5em; } +#search-area { + width: 100%; + padding: 0.5em; + box-sizing: border-box; +} + +#search-area input { + width: 100%; +} + textarea, input { margin: 0; padding: 1.5pt; From 39cc6c86ae0205cdad6af9b04e34922c4bbd7c26 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 10 Feb 2015 09:03:48 -0800 Subject: [PATCH 08/11] Update selected entity color to have more contrast --- examples/html/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/html/style.css b/examples/html/style.css index 254c6545d6..7177b8c8ba 100644 --- a/examples/html/style.css +++ b/examples/html/style.css @@ -134,6 +134,7 @@ table#entity-table { } #entity-table tr.selected { + color: rgb(43, 43, 43); background-color: #AAA; } From 438978b8559620918eff9b721491560780f97bac Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Tue, 10 Feb 2015 19:25:12 +0100 Subject: [PATCH 09/11] Fix reverb memory leak --- libraries/audio-client/src/AudioClient.cpp | 16 ++++++++++++++++ libraries/audio-client/src/AudioClient.h | 1 + 2 files changed, 17 insertions(+) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 9f569c9893..7f6c509626 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -135,6 +135,15 @@ AudioClient::AudioClient() : updateTimer->start(DEVICE_CHECK_INTERVAL_MSECS); } +AudioClient::~AudioClient() { + if (_gverbLocal) { + gverb_free(_gverbLocal); + } + if (_gverb) { + gverb_free(_gverb); + } +} + void AudioClient::reset() { _receivedAudioStream.reset(); _stats.reset(); @@ -522,10 +531,17 @@ bool AudioClient::switchOutputToAudioDevice(const QString& outputDeviceName) { void AudioClient::initGverb() { // Initialize a new gverb instance + if (_gverbLocal) { + gverb_free(_gverbLocal); + } _gverbLocal = gverb_new(_outputFormat.sampleRate(), _reverbOptions->getMaxRoomSize(), _reverbOptions->getRoomSize(), _reverbOptions->getReverbTime(), _reverbOptions->getDamping(), _reverbOptions->getSpread(), _reverbOptions->getInputBandwidth(), _reverbOptions->getEarlyLevel(), _reverbOptions->getTailLevel()); + + if (_gverb) { + gverb_free(_gverb); + } _gverb = gverb_new(_outputFormat.sampleRate(), _reverbOptions->getMaxRoomSize(), _reverbOptions->getRoomSize(), _reverbOptions->getReverbTime(), _reverbOptions->getDamping(), _reverbOptions->getSpread(), _reverbOptions->getInputBandwidth(), _reverbOptions->getEarlyLevel(), diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index ed487e4ea1..e55a116e06 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -186,6 +186,7 @@ signals: protected: AudioClient(); + ~AudioClient(); private: void outputFormatChanged(); From 562b289c0541f98e877381d7f45000244cca3216 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Tue, 10 Feb 2015 19:25:38 +0100 Subject: [PATCH 10/11] Fix warning --- libraries/fbx/src/FBXReader.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/fbx/src/FBXReader.cpp b/libraries/fbx/src/FBXReader.cpp index 1da0a7e09f..043bd43115 100644 --- a/libraries/fbx/src/FBXReader.cpp +++ b/libraries/fbx/src/FBXReader.cpp @@ -1166,7 +1166,6 @@ int matchTextureUVSetToAttributeChannel(const QString& texUVSetName, const QHash FBXLight extractLight(const FBXNode& object) { FBXLight light; - int unkwnon = 0; foreach (const FBXNode& subobject, object.children) { QString childname = QString(subobject.name); if (subobject.name == "Properties70") { From 9997ef1b97153d4e36b0429fc91d4e6c46c98c19 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 10 Feb 2015 14:23:00 -0800 Subject: [PATCH 11/11] Increase size of text entity --- examples/editEntities.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/editEntities.js b/examples/editEntities.js index d73c6fa6e7..83550811f1 100644 --- a/examples/editEntities.js +++ b/examples/editEntities.js @@ -425,7 +425,7 @@ var toolBar = (function () { placingEntityID = Entities.addEntity({ type: "Text", position: grid.snapToSurface(grid.snapToGrid(position, false, DEFAULT_DIMENSIONS), DEFAULT_DIMENSIONS), - dimensions: { x: 0.5, y: 0.3, z: 0.01 }, + dimensions: { x: 0.65, y: 0.3, z: 0.01 }, backgroundColor: { red: 64, green: 64, blue: 64 }, textColor: { red: 255, green: 255, blue: 255 }, text: "some text",