From b134f22cfaf11f59ba77571b876f9d0f2513a9c9 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 28 Mar 2016 18:51:34 -0700 Subject: [PATCH 1/4] fix an overflow in portable high resolution clock on windows --- libraries/shared/src/PortableHighResolutionClock.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/shared/src/PortableHighResolutionClock.cpp b/libraries/shared/src/PortableHighResolutionClock.cpp index 6e096a7ce1..9980e51805 100644 --- a/libraries/shared/src/PortableHighResolutionClock.cpp +++ b/libraries/shared/src/PortableHighResolutionClock.cpp @@ -24,7 +24,7 @@ namespace { win_high_resolution_clock::time_point win_high_resolution_clock::now() { LARGE_INTEGER count; QueryPerformanceCounter(&count); - return time_point(duration(count.QuadPart * static_cast(period::den) / g_Frequency)); + return time_point(duration(static_cast(double(count.QuadPart) * static_cast(period::den) / g_Frequency))); } #endif From 37950e99310af0d451023a3ff39f53b3979e6b76 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 29 Mar 2016 13:13:22 -0700 Subject: [PATCH 2/4] use explicit double casts for win_high_resolution_clock --- libraries/shared/src/PortableHighResolutionClock.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/shared/src/PortableHighResolutionClock.cpp b/libraries/shared/src/PortableHighResolutionClock.cpp index 9980e51805..b12798503e 100644 --- a/libraries/shared/src/PortableHighResolutionClock.cpp +++ b/libraries/shared/src/PortableHighResolutionClock.cpp @@ -24,7 +24,7 @@ namespace { win_high_resolution_clock::time_point win_high_resolution_clock::now() { LARGE_INTEGER count; QueryPerformanceCounter(&count); - return time_point(duration(static_cast(double(count.QuadPart) * static_cast(period::den) / g_Frequency))); + return time_point(duration(static_cast(double(count.QuadPart) * double(period::den) / double(g_Frequency)))); } #endif From b9ce427344afeda52326d4488908981b8cb060b6 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 29 Mar 2016 13:25:03 -0700 Subject: [PATCH 3/4] use c-style casts to respect the coding standard --- libraries/shared/src/PortableHighResolutionClock.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/shared/src/PortableHighResolutionClock.cpp b/libraries/shared/src/PortableHighResolutionClock.cpp index b12798503e..55dd61707c 100644 --- a/libraries/shared/src/PortableHighResolutionClock.cpp +++ b/libraries/shared/src/PortableHighResolutionClock.cpp @@ -24,7 +24,7 @@ namespace { win_high_resolution_clock::time_point win_high_resolution_clock::now() { LARGE_INTEGER count; QueryPerformanceCounter(&count); - return time_point(duration(static_cast(double(count.QuadPart) * double(period::den) / double(g_Frequency)))); + return time_point(duration(static_cast((double) count.QuadPart * (double) period::den / (double)g_Frequency))); } #endif From 37e6fce30b8b91d5d0fefce2a0ed056cf6df4ef9 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Wed, 30 Mar 2016 10:48:54 -0700 Subject: [PATCH 4/4] Disconnect menuItemEvent before setIsOptionChecked, and then reconnect. --- examples/selectAudioDevice.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/selectAudioDevice.js b/examples/selectAudioDevice.js index b1da219eb5..c86d034adb 100644 --- a/examples/selectAudioDevice.js +++ b/examples/selectAudioDevice.js @@ -120,21 +120,25 @@ function menuItemEvent(menuItem) { if (menuItem.endsWith(" for Output")) { var selectedDevice = menuItem.trimStartsWith("Use ").trimEndsWith(" for Output"); print("output audio selection..." + selectedDevice); + Menu.menuItemEvent.disconnect(menuItemEvent); Menu.setIsOptionChecked(selectedOutputMenu, false); selectedOutputMenu = menuItem; Menu.setIsOptionChecked(selectedOutputMenu, true); if (AudioDevice.setOutputDevice(selectedDevice)) { Settings.setValue(OUTPUT_DEVICE_SETTING, selectedDevice); } + Menu.menuItemEvent.connect(menuItemEvent); } else if (menuItem.endsWith(" for Input")) { var selectedDevice = menuItem.trimStartsWith("Use ").trimEndsWith(" for Input"); print("input audio selection..." + selectedDevice); + Menu.menuItemEvent.disconnect(menuItemEvent); Menu.setIsOptionChecked(selectedInputMenu, false); selectedInputMenu = menuItem; Menu.setIsOptionChecked(selectedInputMenu, true); if (AudioDevice.setInputDevice(selectedDevice)) { Settings.setValue(INPUT_DEVICE_SETTING, selectedDevice); } + Menu.menuItemEvent.connect(menuItemEvent); } } }