Slider now moves in communications (OpenAL)
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@354 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -145,6 +145,7 @@ TFB_SoundDecoder* SoundDecoder_Load (char *filename, ALuint buffer_size)
|
|||||||
decoder->frequency = 0;
|
decoder->frequency = 0;
|
||||||
decoder->looping = AL_FALSE;
|
decoder->looping = AL_FALSE;
|
||||||
decoder->error = SOUNDDECODER_OK;
|
decoder->error = SOUNDDECODER_OK;
|
||||||
|
decoder->length = 0; // FIXME should be calculated
|
||||||
decoder->decoder_info = decoder_info_wav;
|
decoder->decoder_info = decoder_info_wav;
|
||||||
decoder->type = SOUNDDECODER_WAV;
|
decoder->type = SOUNDDECODER_WAV;
|
||||||
decoder->filename = (char *) malloc (strlen (filename) + 1);
|
decoder->filename = (char *) malloc (strlen (filename) + 1);
|
||||||
@@ -178,6 +179,7 @@ TFB_SoundDecoder* SoundDecoder_Load (char *filename, ALuint buffer_size)
|
|||||||
decoder->frequency = md_mixfreq;
|
decoder->frequency = md_mixfreq;
|
||||||
decoder->looping = AL_FALSE;
|
decoder->looping = AL_FALSE;
|
||||||
decoder->error = SOUNDDECODER_OK;
|
decoder->error = SOUNDDECODER_OK;
|
||||||
|
decoder->length = 0; // FIXME way to obtain this from mikmod?
|
||||||
decoder->decoder_info = decoder_info_mod;
|
decoder->decoder_info = decoder_info_mod;
|
||||||
decoder->type = SOUNDDECODER_MOD;
|
decoder->type = SOUNDDECODER_MOD;
|
||||||
decoder->filename = (char *) malloc (strlen (filename) + 1);
|
decoder->filename = (char *) malloc (strlen (filename) + 1);
|
||||||
@@ -243,6 +245,7 @@ TFB_SoundDecoder* SoundDecoder_Load (char *filename, ALuint buffer_size)
|
|||||||
decoder->frequency = vinfo->rate;
|
decoder->frequency = vinfo->rate;
|
||||||
decoder->looping = AL_FALSE;
|
decoder->looping = AL_FALSE;
|
||||||
decoder->error = SOUNDDECODER_OK;
|
decoder->error = SOUNDDECODER_OK;
|
||||||
|
decoder->length = (float) ov_time_total (vf, -1);
|
||||||
decoder->decoder_info = decoder_info_ogg;
|
decoder->decoder_info = decoder_info_ogg;
|
||||||
decoder->type = SOUNDDECODER_OGG;
|
decoder->type = SOUNDDECODER_OGG;
|
||||||
decoder->filename = (char *) malloc (strlen (filename) + 1);
|
decoder->filename = (char *) malloc (strlen (filename) + 1);
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ typedef struct tfb_sounddecoder
|
|||||||
ALuint frequency;
|
ALuint frequency;
|
||||||
ALboolean looping;
|
ALboolean looping;
|
||||||
ALint error;
|
ALint error;
|
||||||
|
float length; // total length in seconds
|
||||||
char *decoder_info;
|
char *decoder_info;
|
||||||
|
|
||||||
// semi-private
|
// semi-private
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ typedef struct tfb_soundsource
|
|||||||
ALuint handle;
|
ALuint handle;
|
||||||
BOOLEAN stream_should_be_playing;
|
BOOLEAN stream_should_be_playing;
|
||||||
Mutex stream_mutex;
|
Mutex stream_mutex;
|
||||||
|
ALuint start_time;
|
||||||
} TFB_SoundSource;
|
} TFB_SoundSource;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ PlayStream (TFB_SoundSample *sample, ALuint source, ALboolean looping)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
soundSource[source].start_time = GetTimeCounter ();
|
||||||
soundSource[source].stream_should_be_playing = TRUE;
|
soundSource[source].stream_should_be_playing = TRUE;
|
||||||
alSourcePlay (soundSource[source].handle);
|
alSourcePlay (soundSource[source].handle);
|
||||||
}
|
}
|
||||||
@@ -108,6 +109,7 @@ StopStream (ALuint source)
|
|||||||
void
|
void
|
||||||
PauseStream (ALuint source)
|
PauseStream (ALuint source)
|
||||||
{
|
{
|
||||||
|
soundSource[source].start_time = GetTimeCounter () - soundSource[source].start_time;
|
||||||
soundSource[source].stream_should_be_playing = FALSE;
|
soundSource[source].stream_should_be_playing = FALSE;
|
||||||
alSourcePause (soundSource[source].handle);
|
alSourcePause (soundSource[source].handle);
|
||||||
}
|
}
|
||||||
@@ -115,6 +117,7 @@ PauseStream (ALuint source)
|
|||||||
void
|
void
|
||||||
ResumeStream (ALuint source)
|
ResumeStream (ALuint source)
|
||||||
{
|
{
|
||||||
|
soundSource[source].start_time = GetTimeCounter () - soundSource[source].start_time;
|
||||||
soundSource[source].stream_should_be_playing = TRUE;
|
soundSource[source].stream_should_be_playing = TRUE;
|
||||||
alSourcePlay (soundSource[source].handle);
|
alSourcePlay (soundSource[source].handle);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -260,15 +260,22 @@ GetSoundData (char* data)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Status: Unimplemented
|
|
||||||
int
|
int
|
||||||
GetSoundInfo (int *length, int *offset)
|
GetSoundInfo (int *length, int *offset)
|
||||||
// Umm... How does it know which sound?
|
|
||||||
// Answer: only used in oscill.c slider so sound must be current speech
|
|
||||||
{
|
{
|
||||||
//fprintf (stderr, "Unimplemented function activated: GetSoundInfo()\n");
|
LockMutex (soundSource[SPEECH_SOURCE].stream_mutex);
|
||||||
*length = 1;
|
if (soundSource[SPEECH_SOURCE].sample && soundSource[SPEECH_SOURCE].sample->decoder)
|
||||||
*offset = 0;
|
{
|
||||||
|
*length = (int) (soundSource[SPEECH_SOURCE].sample->decoder->length * (float)ONE_SECOND);
|
||||||
|
*offset = (int) (GetTimeCounter () - soundSource[SPEECH_SOURCE].start_time);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*length = 1;
|
||||||
|
*offset = 0;
|
||||||
|
}
|
||||||
|
UnlockMutex (soundSource[SPEECH_SOURCE].stream_mutex);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "libs/graphics/gfx_common.h"
|
#include "libs/graphics/gfx_common.h"
|
||||||
|
#include "libs/sound/trackplayer.h"
|
||||||
|
|
||||||
//Added by Chris
|
//Added by Chris
|
||||||
//Modified by Mika (removed use of SDL datatypes)
|
//Modified by Mika (removed use of SDL datatypes)
|
||||||
@@ -206,6 +207,8 @@ Slider (void)
|
|||||||
{
|
{
|
||||||
if (offs > len)
|
if (offs > len)
|
||||||
offs = len;
|
offs = len;
|
||||||
|
if (len == 0)
|
||||||
|
len = 1;
|
||||||
buttonStamp.origin.x = sliderStamp.origin.x + sliderSpace * offs / len;
|
buttonStamp.origin.x = sliderStamp.origin.x + sliderSpace * offs / len;
|
||||||
BatchGraphics ();
|
BatchGraphics ();
|
||||||
DrawStamp (&sliderStamp);
|
DrawStamp (&sliderStamp);
|
||||||
|
|||||||
Reference in New Issue
Block a user