Browse Source

Changes to fix display issue for non-ASCII device names and some compile warnings on the Windows platform (most from Pavel Mogilevskiy).

tags/4.1.0
Gary Scavone 11 years ago
parent
commit
b8f788ee2a
3 changed files with 26 additions and 7 deletions
  1. +13
    -5
      RtAudio.cpp
  2. +1
    -1
      configure.ac
  3. +12
    -1
      tests/playsaw.cpp

+ 13
- 5
RtAudio.cpp View File

@@ -602,7 +602,11 @@ RtAudio::DeviceInfo RtApiCore :: getDeviceInfo( unsigned int device )
//const char *mname = CFStringGetCStringPtr( cfname, CFStringGetSystemEncoding() ); //const char *mname = CFStringGetCStringPtr( cfname, CFStringGetSystemEncoding() );
int length = CFStringGetLength(cfname); int length = CFStringGetLength(cfname);
char *mname = (char *)malloc(length * 3 + 1); char *mname = (char *)malloc(length * 3 + 1);
#if defined( UNICODE ) || defined( _UNICODE )
CFStringGetCString(cfname, mname, length * 3 + 1, kCFStringEncodingUTF8);
#else
CFStringGetCString(cfname, mname, length * 3 + 1, CFStringGetSystemEncoding()); CFStringGetCString(cfname, mname, length * 3 + 1, CFStringGetSystemEncoding());
#endif
info.name.append( (const char *)mname, strlen(mname) ); info.name.append( (const char *)mname, strlen(mname) );
info.name.append( ": " ); info.name.append( ": " );
CFRelease( cfname ); CFRelease( cfname );
@@ -620,7 +624,11 @@ RtAudio::DeviceInfo RtApiCore :: getDeviceInfo( unsigned int device )
//const char *name = CFStringGetCStringPtr( cfname, CFStringGetSystemEncoding() ); //const char *name = CFStringGetCStringPtr( cfname, CFStringGetSystemEncoding() );
length = CFStringGetLength(cfname); length = CFStringGetLength(cfname);
char *name = (char *)malloc(length * 3 + 1); char *name = (char *)malloc(length * 3 + 1);
#if defined( UNICODE ) || defined( _UNICODE )
CFStringGetCString(cfname, name, length * 3 + 1, kCFStringEncodingUTF8);
#else
CFStringGetCString(cfname, name, length * 3 + 1, CFStringGetSystemEncoding()); CFStringGetCString(cfname, name, length * 3 + 1, CFStringGetSystemEncoding());
#endif
info.name.append( (const char *)name, strlen(name) ); info.name.append( (const char *)name, strlen(name) );
CFRelease( cfname ); CFRelease( cfname );
free(name); free(name);
@@ -2775,7 +2783,7 @@ RtAudio::DeviceInfo RtApiAsio :: getDeviceInfo( unsigned int device )
return info; return info;
} }
static void bufferSwitch( long index, ASIOBool processNow )
static void bufferSwitch( long index, ASIOBool /*processNow*/ )
{ {
RtApiAsio *object = (RtApiAsio *) asioCallbackInfo->object; RtApiAsio *object = (RtApiAsio *) asioCallbackInfo->object;
object->callbackEvent( index ); object->callbackEvent( index );
@@ -3458,7 +3466,7 @@ static void sampleRateChanged( ASIOSampleRate sRate )
std::cerr << "\nRtApiAsio: driver reports sample rate changed to " << sRate << " ... stream stopped!!!\n" << std::endl; std::cerr << "\nRtApiAsio: driver reports sample rate changed to " << sRate << " ... stream stopped!!!\n" << std::endl;
} }
static long asioMessages( long selector, long value, void* message, double* opt )
static long asioMessages( long selector, long value, void* /*message*/, double* /*opt*/ )
{ {
long ret = 0; long ret = 0;
@@ -3697,7 +3705,7 @@ unsigned int RtApiDs :: getDeviceCount( void )
for ( unsigned int i=0; i<indices.size(); i++ ) for ( unsigned int i=0; i<indices.size(); i++ )
dsDevices.erase( dsDevices.begin()-nErased++ ); dsDevices.erase( dsDevices.begin()-nErased++ );
return dsDevices.size();
return static_cast<unsigned int>(dsDevices.size());
} }
RtAudio::DeviceInfo RtApiDs :: getDeviceInfo( unsigned int device ) RtAudio::DeviceInfo RtApiDs :: getDeviceInfo( unsigned int device )
@@ -3885,7 +3893,7 @@ bool RtApiDs :: probeDeviceOpen( unsigned int device, StreamMode mode, unsigned
return FAILURE; return FAILURE;
} }
unsigned int nDevices = dsDevices.size();
size_t nDevices = dsDevices.size();
if ( nDevices == 0 ) { if ( nDevices == 0 ) {
// This should not happen because a check is made before this function is called. // This should not happen because a check is made before this function is called.
errorText_ = "RtApiDs::probeDeviceOpen: no devices found!"; errorText_ = "RtApiDs::probeDeviceOpen: no devices found!";
@@ -5027,7 +5035,7 @@ static std::string convertTChar( LPCTSTR name )
static BOOL CALLBACK deviceQueryCallback( LPGUID lpguid, static BOOL CALLBACK deviceQueryCallback( LPGUID lpguid,
LPCTSTR description, LPCTSTR description,
LPCTSTR module,
LPCTSTR /*module*/,
LPVOID lpContext ) LPVOID lpContext )
{ {
struct DsProbeData& probeInfo = *(struct DsProbeData*) lpContext; struct DsProbeData& probeInfo = *(struct DsProbeData*) lpContext;


+ 1
- 1
configure.ac View File

@@ -45,7 +45,7 @@ AC_ARG_ENABLE(debug,
AC_CHECK_FUNC(gettimeofday, [cppflag="$cppflag -DHAVE_GETTIMEOFDAY"], ) AC_CHECK_FUNC(gettimeofday, [cppflag="$cppflag -DHAVE_GETTIMEOFDAY"], )


# Set paths if prefix is defined # Set paths if prefix is defined
if test x"$prefix" != x; then
if test x"$prefix" != x && test x$prefix != xNONE; then
LIBS="$LIBS -L$prefix/lib" LIBS="$LIBS -L$prefix/lib"
CPPFLAGS="$CPPFLAGS -I$prefix/include" CPPFLAGS="$CPPFLAGS -I$prefix/include"
fi fi


+ 12
- 1
tests/playsaw.cpp View File

@@ -64,6 +64,17 @@ void usage( void ) {
exit( 0 ); exit( 0 );
} }


void errorCallback( RtAudioError::Type type, const std::string &errorText )
{
// This example error handling function does exactly the same thing
// as the embedded RtAudio::error() function.
std::cout << "in errorCallback" << std::endl;
if ( type == RtAudioError::WARNING )
std::cerr << '\n' << errorText << "\n\n";
else if ( type != RtAudioError::WARNING )
throw( RtAudioError( errorText, type ) );
}

unsigned int channels; unsigned int channels;
RtAudio::StreamOptions options; RtAudio::StreamOptions options;
unsigned int frameCounter = 0; unsigned int frameCounter = 0;
@@ -169,7 +180,7 @@ int main( int argc, char *argv[] )
options.flags |= RTAUDIO_NONINTERLEAVED; options.flags |= RTAUDIO_NONINTERLEAVED;
#endif #endif
try { try {
dac.openStream( &oParams, NULL, FORMAT, fs, &bufferFrames, &saw, (void *)data, &options );
dac.openStream( &oParams, NULL, FORMAT, fs, &bufferFrames, &saw, (void *)data, &options, &errorCallback );
dac.startStream(); dac.startStream();
} }
catch ( RtAudioError& e ) { catch ( RtAudioError& e ) {


Loading…
Cancel
Save