Browse Source

A fix for 64-bits

rdb 17 years ago
parent
commit
9bd12f0201
1 changed files with 5 additions and 2 deletions
  1. 5 2
      panda/src/audiotraits/fmodAudioSound.cxx

+ 5 - 2
panda/src/audiotraits/fmodAudioSound.cxx

@@ -311,10 +311,13 @@ set_time(float start_time) {
   }
   
   if (_channel == 0) {
-
+    // This is because setCallback expects an integer
+    // but 64-bits pointers wont fit in a 32-bits int.
+    nassertv_always((intptr_t)this < UINT_MAX);
+    
     result = _manager->_system->playSound(FMOD_CHANNEL_FREE, _sound, true, &_channel);
     fmod_audio_errcheck("_system->playSound()", result);
-    result = _channel->setCallback(FMOD_CHANNEL_CALLBACKTYPE_END, sound_end_callback, (int)this);
+    result = _channel->setCallback(FMOD_CHANNEL_CALLBACKTYPE_END, sound_end_callback, (intptr_t)this);
     fmod_audio_errcheck("_channel->setCallback()", result);
     result = _channel->setPosition( startTime , FMOD_TIMEUNIT_MS );
     fmod_audio_errcheck("_channel->setPosition()", result);