From: ehofman Date: Tue, 8 Dec 2009 09:48:00 +0000 (+0000) Subject: John Denker: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=0dc35c8d38c8d59ab69362299e76610c3b1ca045;p=flightgear.git John Denker: Suggestion: It might be helpful to promote each of the .c files to .cxx. Rationale: -- The configure/makefile system handles CFLAGS differently from CXXFLAGS. -- It is important for the *info programs to compiled and run in exactly the same environment as the main fgfs program. Some users depend on compiler or linker flags such as rpath that strongly affect the results of the *info programs. -- There is no downside; you code compiles just fine as-is under the c++ compiler. second part of the original commit, for ehofman/sound --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 57a0bd77c..87d87c7ec 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -8,7 +8,7 @@ est_epsilon_LDADD = $(opengl_LIBS) gl_info_SOURCES = gl-info.c gl_info_LDADD = $(opengl_LIBS) -alcinfo_SOURCES = alcinfo.c +alcinfo_SOURCES = alcinfo.cxx alcinfo_LDADD = $(openal_LIBS) test_env_map_SOURCES = test-env-map.cxx diff --git a/tests/alcinfo.c b/tests/alcinfo.c deleted file mode 100644 index acc40a22d..000000000 --- a/tests/alcinfo.c +++ /dev/null @@ -1,336 +0,0 @@ -/* -*- mode: C; tab-width:8; c-basic-offset:8 -*- - * vi:set ts=8: - * - * alcinfo.x - * - * alcinfo display info about a ALC extension and OpenAL renderer - * - * This file is in the Public Domain and comes with no warranty. - * Erik Hofman - * - */ - -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#ifdef __APPLE__ -# include -# include -#else -# include -# include -# include -#endif - -#ifndef AL_VERSION_1_1 -# ifdef __APPLE__ -# include -# include -#else -# include -# include -# endif -#endif - -#include -#include -#include - -#ifndef ALC_ALL_DEVICES_SPECIFIER -# define ALC_ALL_DEVICES_SPECIFIER 0x1013 -#endif - -#define MAX_DATA 16 -static const int indentation = 4; -static const int maxmimumWidth = 79; - -void printExtensions (const char *, char, const char *); -void displayDevices(const char *, const char *); -char *getDeviceName(int, char **); -void testForError(void *, char *); -void testForALCError(ALCdevice *); - -int main(int argc, char **argv) -{ - ALCint data[MAX_DATA]; - ALCdevice *device = NULL; - ALCcontext *context = NULL; - ALenum error; - char *s; - - if (alcIsExtensionPresent(NULL, "ALC_enumeration_EXT") == AL_TRUE) - { - if (alcIsExtensionPresent(NULL, "ALC_enumerate_all_EXT") == AL_FALSE) - s = (char *)alcGetString(NULL, ALC_DEVICE_SPECIFIER); - else - s = (char *)alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER); - displayDevices("output", s); - - s = (char *)alcGetString(NULL, ALC_CAPTURE_DEVICE_SPECIFIER); - displayDevices("input", s); - } - - s = getDeviceName(argc, argv); - device = alcOpenDevice(s); - testForError(device, "Audio device not available."); - - context = alcCreateContext(device, NULL); - testForError(context, "Unable to create a valid context."); - - alcMakeContextCurrent(context); - testForALCError(device); - - s = (char *)alcGetString(device, ALC_DEFAULT_DEVICE_SPECIFIER); - printf("default output device: %s\n", s); - testForALCError(device); - - error = alcIsExtensionPresent(device, "ALC_EXT_capture"); - if (error) - { - s = (char *)alcGetString(device, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER); - printf("default input device: %s\n", s); - testForALCError(device); - } - printf("capture support: %s\n", (error) ? "yes" : "no"); - - alcGetIntegerv(device, ALC_FREQUENCY, 1, data); - printf("mixer frequency: %u hz\n", data[0]); - testForError(device, "invalid context"); - - alcGetIntegerv(device, ALC_REFRESH, 1, data+1); - printf("refresh rate : %u hz\n", data[0]/data[1]); - testForError(device, "invalid context"); - - data[0] = 0; - alcGetIntegerv(device, ALC_MONO_SOURCES, 1, data); - printf("supported sources; mono: %u, ", data[0]); - testForError(device, "invalid context"); - - data[0] = 0; - alcGetIntegerv(device, ALC_STEREO_SOURCES, 1, data); - printf("stereo: %u\n", data[0]); - testForError(device, "invalid context"); - - printf("ALC version: "); - alcGetIntegerv(device, ALC_MAJOR_VERSION, 1, data); - printf("%i.", *data); - alcGetIntegerv(device, ALC_MINOR_VERSION, 1, data); - printf("%i\n", *data); - testForALCError(device); - - s = (char *)alcGetString(device, ALC_EXTENSIONS); - printExtensions ("ALC extensions", ' ', s); - testForALCError(device); - - s = (char *)alGetString(AL_VENDOR); - error = alGetError(); - if ((error = alGetError()) != AL_NO_ERROR) - printf("Error #%x: %s\n", error, alGetString(error)); - else - printf("OpenAL vendor string: %s\n", s); - - s = (char *)alGetString(AL_RENDERER); - if ((error = alGetError()) != AL_NO_ERROR) - printf("Error #%x: %s\n", error, alGetString(error)); - else - printf("OpenAL renderer string: %s\n", s); - - s = (char *)alGetString(AL_VERSION); - if ((error = alGetError()) != AL_NO_ERROR) - printf("Error #%x: %s\n", error, alGetString(error)); - else if (!s) - printf("Quering AL_VERSION returned NULL pointer!\n"); - else - printf("OpenAL version string: %s\n", s); - - s = (char *)alGetString(AL_EXTENSIONS); - printExtensions ("OpenAL extensions", ' ', s); - testForALCError(device); - -/* alut testing mechanism */ - context = alcGetCurrentContext(); - if (context == NULL) - { - printf("Error: no current context\n"); - } - else - { - if (alGetError () != AL_NO_ERROR) - { - printf("Alert: AL error on entry\n"); - } - else - { - if (alcGetError (alcGetContextsDevice (context)) != ALC_NO_ERROR) - { - printf("Alert: ALC error on entry\n"); - } - } - } -/* end of alut test */ - - - if (alcMakeContextCurrent(NULL) == 0) - printf("alcMakeContextCurrent failed.\n"); - - device = alcGetContextsDevice(context); - alcDestroyContext(context); - testForALCError(device); - - if (alcCloseDevice(device) == 0) - printf("alcCloseDevice failed.\n"); - - return 0; -} - -/* -------------------------------------------------------------------------- */ - -void -printChar (int c, int *width) -{ - putchar (c); - *width = (c == '\n') ? 0 : (*width + 1); -} - -void -indent (int *width) -{ - int i; - for (i = 0; i < indentation; i++) - { - printChar (' ', width); - } -} - -void -printExtensions (const char *header, char separator, const char *extensions) -{ - int width = 0, start = 0, end = 0; - - printf ("%s:\n", header); - if (extensions == NULL || extensions[0] == '\0') - { - return; - } - - indent (&width); - while (1) - { - if (extensions[end] == separator || extensions[end] == '\0') - { - if (width + end - start + 2 > maxmimumWidth) - { - printChar ('\n', &width); - indent (&width); - } - while (start < end) - { - printChar (extensions[start], &width); - start++; - } - if (extensions[end] == '\0') - { - break; - } - start++; - end++; - if (extensions[end] == '\0') - { - break; - } - printChar (',', &width); - printChar (' ', &width); - } - end++; - } - printChar ('\n', &width); -} - -char * -getCommandLineOption(int argc, char **argv, char *option) -{ - int slen = strlen(option); - char *rv = 0; - int i; - - for (i=0; i + * + */ + +#if HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef __APPLE__ +# include +# include +#else +# include +# include +# include +#endif + +#ifndef AL_VERSION_1_1 +# ifdef __APPLE__ +# include +# include +#else +# include +# include +# endif +#endif + +#include +#include +#include +#include + +using std::string; + +#ifndef ALC_ALL_DEVICES_SPECIFIER +# define ALC_ALL_DEVICES_SPECIFIER 0x1013 +#endif + +#define MAX_DATA 16 +static const int indentation = 4; +static const int maxmimumWidth = 79; + +void printExtensions (const char *, char, const char *); +void displayDevices(const char *, const char *); +char *getDeviceName(int, char **); +void testForError(void *, const string&); +void testForALCError(ALCdevice *); + +int main(int argc, char **argv) +{ + ALCint data[MAX_DATA]; + ALCdevice *device = NULL; + ALCcontext *context = NULL; + ALenum error; + char *s; + + if (alcIsExtensionPresent(NULL, "ALC_enumeration_EXT") == AL_TRUE) + { + if (alcIsExtensionPresent(NULL, "ALC_enumerate_all_EXT") == AL_FALSE) + s = (char *)alcGetString(NULL, ALC_DEVICE_SPECIFIER); + else + s = (char *)alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER); + displayDevices("output", s); + + s = (char *)alcGetString(NULL, ALC_CAPTURE_DEVICE_SPECIFIER); + displayDevices("input", s); + } + + s = getDeviceName(argc, argv); + device = alcOpenDevice(s); + testForError(device, "Audio device not available."); + + context = alcCreateContext(device, NULL); + testForError(context, "Unable to create a valid context."); + + alcMakeContextCurrent(context); + testForALCError(device); + + s = (char *)alcGetString(device, ALC_DEFAULT_DEVICE_SPECIFIER); + printf("default output device: %s\n", s); + testForALCError(device); + + error = alcIsExtensionPresent(device, "ALC_EXT_capture"); + if (error) + { + s = (char *)alcGetString(device, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER); + printf("default input device: %s\n", s); + testForALCError(device); + } + printf("capture support: %s\n", (error) ? "yes" : "no"); + + alcGetIntegerv(device, ALC_FREQUENCY, 1, data); + printf("mixer frequency: %u hz\n", data[0]); + testForALCError(device); + + alcGetIntegerv(device, ALC_REFRESH, 1, data+1); + printf("refresh rate : %u hz\n", data[0]/data[1]); + testForALCError(device); + + data[0] = 0; + alcGetIntegerv(device, ALC_MONO_SOURCES, 1, data); + error = alcGetError(device); + if (error == AL_NONE) { + printf("supported sources; mono: %u, ", data[0]); + + data[0] = 0; + alcGetIntegerv(device, ALC_STEREO_SOURCES, 1, data); + printf("stereo: %u\n", data[0]); + testForALCError(device); + } + + printf("ALC version: "); + alcGetIntegerv(device, ALC_MAJOR_VERSION, 1, data); + printf("%i.", *data); + alcGetIntegerv(device, ALC_MINOR_VERSION, 1, data); + printf("%i\n", *data); + testForALCError(device); + + s = (char *)alcGetString(device, ALC_EXTENSIONS); + printExtensions ("ALC extensions", ' ', s); + testForALCError(device); + + s = (char *)alGetString(AL_VENDOR); + error = alGetError(); + if ((error = alGetError()) != AL_NO_ERROR) + printf("Error #%x: %s\n", error, alGetString(error)); + else + printf("OpenAL vendor string: %s\n", s); + + s = (char *)alGetString(AL_RENDERER); + if ((error = alGetError()) != AL_NO_ERROR) + printf("Error #%x: %s\n", error, alGetString(error)); + else + printf("OpenAL renderer string: %s\n", s); + + s = (char *)alGetString(AL_VERSION); + if ((error = alGetError()) != AL_NO_ERROR) + printf("Error #%x: %s\n", error, alGetString(error)); + else if (!s) + printf("Quering AL_VERSION returned NULL pointer!\n"); + else + printf("OpenAL version string: %s\n", s); + + s = (char *)alGetString(AL_EXTENSIONS); + printExtensions ("OpenAL extensions", ' ', s); + testForALCError(device); + +/* alut testing mechanism */ + context = alcGetCurrentContext(); + if (context == NULL) + { + printf("Error: no current context\n"); + } + else + { + if (alGetError () != AL_NO_ERROR) + { + printf("Alert: AL error on entry\n"); + } + else + { + if (alcGetError (alcGetContextsDevice (context)) != ALC_NO_ERROR) + { + printf("Alert: ALC error on entry\n"); + } + } + } +/* end of alut test */ + + + if (alcMakeContextCurrent(NULL) == 0) + printf("alcMakeContextCurrent failed.\n"); + + device = alcGetContextsDevice(context); + alcDestroyContext(context); + testForALCError(device); + + if (alcCloseDevice(device) == 0) + printf("alcCloseDevice failed.\n"); + + return 0; +} + +/* -------------------------------------------------------------------------- */ + +void +printChar (int c, int *width) +{ + putchar (c); + *width = (c == '\n') ? 0 : (*width + 1); +} + +void +indent (int *width) +{ + int i; + for (i = 0; i < indentation; i++) + { + printChar (' ', width); + } +} + +void +printExtensions (const char *header, char separator, const char *extensions) +{ + int width = 0, start = 0, end = 0; + + printf ("%s:\n", header); + if (extensions == NULL || extensions[0] == '\0') + { + return; + } + + indent (&width); + while (1) + { + if (extensions[end] == separator || extensions[end] == '\0') + { + if (width + end - start + 2 > maxmimumWidth) + { + printChar ('\n', &width); + indent (&width); + } + while (start < end) + { + printChar (extensions[start], &width); + start++; + } + if (extensions[end] == '\0') + { + break; + } + start++; + end++; + if (extensions[end] == '\0') + { + break; + } + printChar (',', &width); + printChar (' ', &width); + } + end++; + } + printChar ('\n', &width); +} + +char * +getCommandLineOption(int argc, char **argv, const string& option) +{ + int slen = option.size(); + char *rv = 0; + int i; + + for (i=0; i