From 85f666a991db128f29c6d73081e153a50d88cf99 Mon Sep 17 00:00:00 2001 From: Etienne Dechamps Date: Sat, 4 Mar 2023 12:22:35 +0000 Subject: [PATCH 1/6] Fix "_WIN32_WINNT" redefined warning This fixes the following GCC warning: /home/runner/work/portaudio/portaudio/test/patest_dsound_find_best_latency_params.c:43: error: "_WIN32_WINNT" redefined [-Werror] 43 | #define _WIN32_WINNT 0x0501 /* for GetNativeSystemInfo */ | In file included from /usr/share/mingw-w64/include/corecrt.h:10, from /usr/share/mingw-w64/include/corecrt_stdio_config.h:10, from /usr/share/mingw-w64/include/stdio.h:9, from /home/runner/work/portaudio/portaudio/test/patest_dsound_find_best_latency_params.c:39: /usr/share/mingw-w64/include/_mingw.h:233: note: this is the location of the previous definition 233 | #define _WIN32_WINNT 0x502 | I am proactively fixing this warning because GCC preprocessor warnings seem difficult to suppress. --- test/patest_dsound_find_best_latency_params.c | 3 ++- test/patest_wmme_find_best_latency_params.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/test/patest_dsound_find_best_latency_params.c b/test/patest_dsound_find_best_latency_params.c index 1c074ab16..1526589ec 100644 --- a/test/patest_dsound_find_best_latency_params.c +++ b/test/patest_dsound_find_best_latency_params.c @@ -36,11 +36,12 @@ * license above. */ +#define _WIN32_WINNT 0x0501 /* for GetNativeSystemInfo */ + #include #include #include -#define _WIN32_WINNT 0x0501 /* for GetNativeSystemInfo */ #include //#include /* required when using pa_win_wmme.h */ diff --git a/test/patest_wmme_find_best_latency_params.c b/test/patest_wmme_find_best_latency_params.c index 5c715f945..52b2c1f35 100644 --- a/test/patest_wmme_find_best_latency_params.c +++ b/test/patest_wmme_find_best_latency_params.c @@ -36,11 +36,12 @@ * license above. */ +#define _WIN32_WINNT 0x0501 /* for GetNativeSystemInfo */ + #include #include #include -#define _WIN32_WINNT 0x0501 /* for GetNativeSystemInfo */ #include /* required when using pa_win_wmme.h */ #include /* required when using pa_win_wmme.h */ From 739b7ebe59a7ce1a9c4590ee7815960a5a191b42 Mon Sep 17 00:00:00 2001 From: Etienne Dechamps Date: Sat, 4 Mar 2023 17:10:30 +0000 Subject: [PATCH 2/6] Fix unreferenced local variable warnings portaudio\qa\loopback\src\paqa.c(971): warning C4101: 'savedValue': unreferenced local variable --- qa/loopback/src/paqa.c | 1 - 1 file changed, 1 deletion(-) diff --git a/qa/loopback/src/paqa.c b/qa/loopback/src/paqa.c index a3bf3c77d..a3ed4acfb 100644 --- a/qa/loopback/src/paqa.c +++ b/qa/loopback/src/paqa.c @@ -968,7 +968,6 @@ static int PaQa_AnalyzeLoopbackConnection( UserOptions *userOptions, PaDeviceInd int iRate; int iSize; int iFormat; - int savedValue; TestParameters testParams; const PaDeviceInfo *inputDeviceInfo = Pa_GetDeviceInfo( inputDevice ); const PaDeviceInfo *outputDeviceInfo = Pa_GetDeviceInfo( outputDevice ); From 89d6e6f2be37be004b1bb2f9554fcaa082194e45 Mon Sep 17 00:00:00 2001 From: Etienne Dechamps Date: Sat, 4 Mar 2023 17:14:37 +0000 Subject: [PATCH 3/6] Fix usage() call in patest_dsound_find_best_latency_params This is a real bug that was caught by the following warnings: portaudio\test\patest_dsound_find_best_latency_params.c(409): warning C4047: 'function': 'int' differs in levels of indirection from 'const PaHostApiInfo *' portaudio\test\patest_dsound_find_best_latency_params.c(409): warning C4024: 'usage': different types for formal and actual parameter 1 portaudio\test\patest_dsound_find_best_latency_params.c(411): warning C4047: 'function': 'int' differs in levels of indirection from 'const PaHostApiInfo *' portaudio\test\patest_dsound_find_best_latency_params.c(411): warning C4024: 'usage': different types for formal and actual parameter 1 --- test/patest_dsound_find_best_latency_params.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/patest_dsound_find_best_latency_params.c b/test/patest_dsound_find_best_latency_params.c index 1526589ec..df1b05332 100644 --- a/test/patest_dsound_find_best_latency_params.c +++ b/test/patest_dsound_find_best_latency_params.c @@ -406,9 +406,9 @@ int main(int argc, char* argv[]) if( argc >= 2 ){ deviceIndex = -1; if( sscanf( argv[1], "%d", &deviceIndex ) != 1 ) - usage(dsoundHostApiInfo); + usage(dsoundHostApiIndex); if( deviceIndex < 0 || deviceIndex >= Pa_GetDeviceCount() || Pa_GetDeviceInfo(deviceIndex)->hostApi != dsoundHostApiIndex ){ - usage(dsoundHostApiInfo); + usage(dsoundHostApiIndex); } } From 8feb9a1998938a5ac393bce4b780bc990c8ad979 Mon Sep 17 00:00:00 2001 From: Etienne Dechamps Date: Sat, 4 Mar 2023 17:26:50 +0000 Subject: [PATCH 4/6] Fix format strings portaudio\test\patest_dsound_find_best_latency_params.c(205): warning C4477: 'fprintf' : format string '%S' requires an argument of type 'unsigned short *', but variadic argument 4 has type 'CHAR *' portaudio\test\patest_dsound_find_best_latency_params.c(205): note: consider using '%hS' in the format string portaudio\test\patest_dsound_find_best_latency_params.c(205): note: consider using '%TS' in the format string portaudio\test\patest_wmme_find_best_latency_params.c(210): warning C4477: 'fprintf' : format string '%S' requires an argument of type 'unsigned short *', but variadic argument 4 has type 'CHAR *' portaudio\test\patest_wmme_find_best_latency_params.c(210): note: consider using '%hS' in the format string portaudio\test\patest_wmme_find_best_latency_params.c(210): note: consider using '%TS' in the format string portaudio\examples\paex_read_write_wire.c(101): warning C4477: 'printf' : format string '%lu' requires an argument of type 'unsigned long', but variadic argument 1 has type 'size_t' portaudio\examples\paex_read_write_wire.c(101): note: consider using '%zu' in the format string portaudio\examples\paex_read_write_wire.c(102): warning C4477: 'printf' : format string '%lu' requires an argument of type 'unsigned long', but variadic argument 1 has type 'size_t' portaudio\examples\paex_read_write_wire.c(102): note: consider using '%zu' in the format string --- examples/paex_read_write_wire.c | 4 ++-- test/patest_dsound_find_best_latency_params.c | 4 ++-- test/patest_wmme_find_best_latency_params.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/paex_read_write_wire.c b/examples/paex_read_write_wire.c index b5046afd6..46fc8bc40 100644 --- a/examples/paex_read_write_wire.c +++ b/examples/paex_read_write_wire.c @@ -98,8 +98,8 @@ int main(void) int numChannels; printf("patest_read_write_wire.c\n"); fflush(stdout); - printf("sizeof(int) = %lu\n", sizeof(int)); fflush(stdout); - printf("sizeof(long) = %lu\n", sizeof(long)); fflush(stdout); + printf("sizeof(int) = %lu\n", (unsigned long) sizeof(int)); fflush(stdout); + printf("sizeof(long) = %lu\n", (unsigned long) sizeof(long)); fflush(stdout); err = Pa_Initialize(); if( err != paNoError ) goto error2; diff --git a/test/patest_dsound_find_best_latency_params.c b/test/patest_dsound_find_best_latency_params.c index df1b05332..da01b0518 100644 --- a/test/patest_dsound_find_best_latency_params.c +++ b/test/patest_dsound_find_best_latency_params.c @@ -46,7 +46,7 @@ //#include /* required when using pa_win_wmme.h */ #include /* for _getch */ - +#include #include "portaudio.h" #include "pa_win_ds.h" @@ -202,7 +202,7 @@ static void printWindowsVersionInfo( FILE *fp ) fprintf( fp, "OS name and edition: %s %s\n", osName, osProductType ); - fprintf( fp, "OS version: %d.%d.%d %S\n", + _ftprintf( fp, TEXT("OS version: %d.%d.%d %s\n"), osVersionInfoEx.dwMajorVersion, osVersionInfoEx.dwMinorVersion, osVersionInfoEx.dwBuildNumber, osVersionInfoEx.szCSDVersion ); fprintf( fp, "Processor architecture: %s\n", processorArchitecture ); diff --git a/test/patest_wmme_find_best_latency_params.c b/test/patest_wmme_find_best_latency_params.c index 52b2c1f35..701d1a3f6 100644 --- a/test/patest_wmme_find_best_latency_params.c +++ b/test/patest_wmme_find_best_latency_params.c @@ -46,7 +46,7 @@ #include /* required when using pa_win_wmme.h */ #include /* for _getch */ - +#include #include "portaudio.h" #include "pa_win_wmme.h" @@ -207,7 +207,7 @@ static void printWindowsVersionInfo( FILE *fp ) fprintf( fp, "OS name and edition: %s %s\n", osName, osProductType ); - fprintf( fp, "OS version: %d.%d.%d %S\n", + _ftprintf( fp, TEXT("OS version: %d.%d.%d %s\n"), osVersionInfoEx.dwMajorVersion, osVersionInfoEx.dwMinorVersion, osVersionInfoEx.dwBuildNumber, osVersionInfoEx.szCSDVersion ); fprintf( fp, "Processor architecture: %s\n", processorArchitecture ); From 7f7c5e92adebf705fc041ae930c5e5a54b13c86c Mon Sep 17 00:00:00 2001 From: Etienne Dechamps Date: Sat, 4 Mar 2023 17:50:13 +0000 Subject: [PATCH 5/6] Fix incompatible-pointer-types warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit /home/runner/work/portaudio/portaudio/test/patest_dsound_find_best_latency_params.c: In function ‘printWindowsVersionInfo’: /home/runner/work/portaudio/portaudio/test/patest_dsound_find_best_latency_params.c:104:19: warning: passing argument 1 of ‘GetVersionExA’ from incompatible pointer type [-Wincompatible-pointer-types] 104 | GetVersionEx( &osVersionInfoEx ); | ^~~~~~~~~~~~~~~~ | | | OSVERSIONINFOEX * {aka OSVERSIONINFOEXA *} In file included from /usr/share/mingw-w64/include/winbase.h:36, from /usr/share/mingw-w64/include/windows.h:70, from /home/runner/work/portaudio/portaudio/test/patest_dsound_find_best_latency_params.c:45: /usr/share/mingw-w64/include/sysinfoapi.h:64:61: note: expected ‘LPOSVERSIONINFOA’ {aka ‘struct _OSVERSIONINFOA *’} but argument is of type ‘OSVERSIONINFOEX *’ {aka ‘OSVERSIONINFOEXA *’} 64 | WINBASEAPI WINBOOL WINAPI GetVersionExA (LPOSVERSIONINFOA lpVersionInformation); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ This is a false positive - the call is valid as the function can take either OSVERSIONINFO or OSVERSIONINFOEX. We suppress the warning using a cast. --- test/patest_dsound_find_best_latency_params.c | 2 +- test/patest_wmme_find_best_latency_params.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/patest_dsound_find_best_latency_params.c b/test/patest_dsound_find_best_latency_params.c index da01b0518..734e59b66 100644 --- a/test/patest_dsound_find_best_latency_params.c +++ b/test/patest_dsound_find_best_latency_params.c @@ -101,7 +101,7 @@ static void printWindowsVersionInfo( FILE *fp ) memset( &osVersionInfoEx, 0, sizeof(OSVERSIONINFOEX) ); osVersionInfoEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); - GetVersionEx( &osVersionInfoEx ); + GetVersionEx( (LPOSVERSIONINFO) &osVersionInfoEx ); if( osVersionInfoEx.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS ){ diff --git a/test/patest_wmme_find_best_latency_params.c b/test/patest_wmme_find_best_latency_params.c index 701d1a3f6..00b3a1925 100644 --- a/test/patest_wmme_find_best_latency_params.c +++ b/test/patest_wmme_find_best_latency_params.c @@ -106,7 +106,7 @@ static void printWindowsVersionInfo( FILE *fp ) memset( &osVersionInfoEx, 0, sizeof(OSVERSIONINFOEX) ); osVersionInfoEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); - GetVersionEx( &osVersionInfoEx ); + GetVersionEx( (LPOSVERSIONINFO) &osVersionInfoEx ); if( osVersionInfoEx.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS ){ From 3e8698ceed4fd8d97fe906ca02f01e7db98828c4 Mon Sep 17 00:00:00 2001 From: Etienne Dechamps Date: Sat, 4 Mar 2023 17:56:04 +0000 Subject: [PATCH 6/6] Fix double to float truncation warnings warning C4305: truncation from 'double' to 'float' --- qa/paqa_devs.c | 2 +- src/hostapi/jack/pa_jack.c | 2 +- test/patest_leftright.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/qa/paqa_devs.c b/qa/paqa_devs.c index bab571115..81b7509c7 100644 --- a/qa/paqa_devs.c +++ b/qa/paqa_devs.c @@ -118,7 +118,7 @@ static int gNumFailed = 0; static float NextSineSample( PaQaData *data ) { float phase = data->phase + PHASE_INCREMENT; - if( phase > M_PI ) phase -= 2.0 * M_PI; + if( phase > M_PI ) phase -= (float) (2.0 * M_PI); data->phase = phase; return sinf(phase) * SINE_AMPLITUDE; } diff --git a/src/hostapi/jack/pa_jack.c b/src/hostapi/jack/pa_jack.c index 3dcaadb79..746885fb6 100644 --- a/src/hostapi/jack/pa_jack.c +++ b/src/hostapi/jack/pa_jack.c @@ -1216,7 +1216,7 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, stream->isBlockingStream = !streamCallback; if( stream->isBlockingStream ) { - float latency = 0.001; /* 1ms is the absolute minimum we support */ + float latency = 0.001f; /* 1ms is the absolute minimum we support */ int minimum_buffer_frames = 0; if( inputParameters && inputParameters->suggestedLatency > latency ) diff --git a/test/patest_leftright.c b/test/patest_leftright.c index e61a351ed..ac8da30af 100644 --- a/test/patest_leftright.c +++ b/test/patest_leftright.c @@ -57,7 +57,7 @@ #define M_PI (3.14159265) #endif #define TABLE_SIZE (200) -#define BALANCE_DELTA (0.001) +#define BALANCE_DELTA (0.001f) typedef struct { @@ -161,11 +161,11 @@ int main(void) for( i=0; i<4; i++ ) { printf("Hear low sound on left side.\n"); - data.targetBalance = 0.01; + data.targetBalance = 0.01f; Pa_Sleep( 1000 ); printf("Hear high sound on right side.\n"); - data.targetBalance = 0.99; + data.targetBalance = 0.99f; Pa_Sleep( 1000 ); }