summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.travis.yml6
-rw-r--r--src/audio.c59
-rw-r--r--src/utils.c10
3 files changed, 46 insertions, 29 deletions
diff --git a/.travis.yml b/.travis.yml
index c27b6582..74ad8e8f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,7 +17,7 @@ matrix:
env: ARCH=amd64 INSTALL_GLFW=YES USE_EXTERNAL_GLFW=OFF
sudo: required
- os: linux
- env: ARCH=amd64 INSTALL_GLFW=YES OPENAL=ON STATIC=OFF RELEASE=NO
+ env: ARCH=amd64 INSTALL_GLFW=YES STATIC=OFF RELEASE=NO
sudo: required
- os: linux
env: WAYLAND=ON ARCH=amd64 RELEASE=NO
@@ -42,6 +42,9 @@ matrix:
- os: linux
env: ARCH=html5 RELEASE=NO
sudo: required
+ - os: windows
+ compiler: gcc
+ env: ARCH=i386 SHARED=OFF RELEASE=NO
before_script:
@@ -49,7 +52,6 @@ before_install:
- if [ -z "$USE_EXTERNAL_GLFW" ]; then export USE_EXTERNAL_GLFW=IF_POSSIBLE; fi
- if [ -z "$SHARED" ]; then export SHARED=ON ; fi
- if [ -z "$STATIC" ]; then export STATIC=ON ; fi
- - if [ -z "$OPENAL" ]; then export OPENAL=OFF; fi
- if [[ "$INSTALL_GLFW" == "YES" && "$USE_EXTERNAL_GLFW" != "OFF" ]]; then
export DONT_TEST=1;
fi
diff --git a/src/audio.c b/src/audio.c
index 00e28f2a..a76481b4 100644
--- a/src/audio.c
+++ b/src/audio.c
@@ -1219,6 +1219,8 @@ Music LoadMusicStream(const char *fileName)
// Unload music stream
void UnloadMusicStream(Music music)
{
+ if (music == NULL) return;
+
CloseAudioStream(music->stream);
if (music->ctxType == MUSIC_AUDIO_OGG) stb_vorbis_close(music->ctxOgg);
@@ -1241,41 +1243,46 @@ void UnloadMusicStream(Music music)
// Start music playing (open stream)
void PlayMusicStream(Music music)
{
- AudioBuffer *audioBuffer = (AudioBuffer *)music->stream.audioBuffer;
-
- if (audioBuffer == NULL)
+ if (music != NULL)
{
- TraceLog(LOG_ERROR, "PlayMusicStream() : No audio buffer");
- return;
- }
+ AudioBuffer *audioBuffer = (AudioBuffer *)music->stream.audioBuffer;
- // For music streams, we need to make sure we maintain the frame cursor position. This is hack for this section of code in UpdateMusicStream()
- // // NOTE: In case window is minimized, music stream is stopped,
- // // just make sure to play again on window restore
- // if (IsMusicPlaying(music)) PlayMusicStream(music);
- mal_uint32 frameCursorPos = audioBuffer->frameCursorPos;
+ if (audioBuffer == NULL)
+ {
+ TraceLog(LOG_ERROR, "PlayMusicStream() : No audio buffer");
+ return;
+ }
+
+ // For music streams, we need to make sure we maintain the frame cursor position. This is hack for this section of code in UpdateMusicStream()
+ // // NOTE: In case window is minimized, music stream is stopped,
+ // // just make sure to play again on window restore
+ // if (IsMusicPlaying(music)) PlayMusicStream(music);
+ mal_uint32 frameCursorPos = audioBuffer->frameCursorPos;
- PlayAudioStream(music->stream); // <-- This resets the cursor position.
+ PlayAudioStream(music->stream); // <-- This resets the cursor position.
- audioBuffer->frameCursorPos = frameCursorPos;
+ audioBuffer->frameCursorPos = frameCursorPos;
+ }
}
// Pause music playing
void PauseMusicStream(Music music)
{
- PauseAudioStream(music->stream);
+ if (music != NULL) PauseAudioStream(music->stream);
}
// Resume music playing
void ResumeMusicStream(Music music)
{
- ResumeAudioStream(music->stream);
+ if (music != NULL) ResumeAudioStream(music->stream);
}
// Stop music playing (close stream)
// TODO: To clear a buffer, make sure they have been already processed!
void StopMusicStream(Music music)
{
+ if (music == NULL) return;
+
StopAudioStream(music->stream);
// Restart music context
@@ -1304,6 +1311,8 @@ void StopMusicStream(Music music)
// TODO: Make sure buffers are ready for update... check music state
void UpdateMusicStream(Music music)
{
+ if (music == NULL) return;
+
bool streamEnding = false;
unsigned int subBufferSizeInFrames = ((AudioBuffer *)music->stream.audioBuffer)->bufferSizeInFrames/2;
@@ -1406,32 +1415,35 @@ void UpdateMusicStream(Music music)
// Check if any music is playing
bool IsMusicPlaying(Music music)
{
- return IsAudioStreamPlaying(music->stream);
+ if (music == NULL) return false;
+ else return IsAudioStreamPlaying(music->stream);
}
// Set volume for music
void SetMusicVolume(Music music, float volume)
{
- SetAudioStreamVolume(music->stream, volume);
+ if (music != NULL) SetAudioStreamVolume(music->stream, volume);
}
// Set pitch for music
void SetMusicPitch(Music music, float pitch)
{
- SetAudioStreamPitch(music->stream, pitch);
+ if (music != NULL) SetAudioStreamPitch(music->stream, pitch);
}
// Set music loop count (loop repeats)
// NOTE: If set to -1, means infinite loop
void SetMusicLoopCount(Music music, int count)
{
- music->loopCount = count;
+ if (music != NULL) music->loopCount = count;
}
// Get music time length (in seconds)
float GetMusicTimeLength(Music music)
{
- float totalSeconds = (float)music->totalSamples/(music->stream.sampleRate*music->stream.channels);
+ float totalSeconds = 0.0f;
+
+ if (music != NULL) totalSeconds = (float)music->totalSamples/(music->stream.sampleRate*music->stream.channels);
return totalSeconds;
}
@@ -1441,8 +1453,11 @@ float GetMusicTimePlayed(Music music)
{
float secondsPlayed = 0.0f;
- unsigned int samplesPlayed = music->totalSamples - music->samplesLeft;
- secondsPlayed = (float)samplesPlayed/(music->stream.sampleRate*music->stream.channels);
+ if (music != NULL)
+ {
+ unsigned int samplesPlayed = music->totalSamples - music->samplesLeft;
+ secondsPlayed = (float)samplesPlayed/(music->stream.sampleRate*music->stream.channels);
+ }
return secondsPlayed;
}
diff --git a/src/utils.c b/src/utils.c
index b2951040..e891ef72 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -46,11 +46,6 @@
#include <stdarg.h> // Required for: va_list, va_start(), vfprintf(), va_end()
#include <string.h> // Required for: strlen(), strrchr(), strcmp()
-/* This should be in <stdio.h>, but Travis doesn't find it... */
-FILE *funopen(const void *cookie, int (*readfn)(void *, char *, int),
- int (*writefn)(void *, const char *, int),
- fpos_t (*seekfn)(void *, fpos_t, int), int (*closefn)(void *));
-
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
@@ -67,6 +62,11 @@ AAssetManager *assetManager;
// Module specific Functions Declaration
//----------------------------------------------------------------------------------
#if defined(PLATFORM_ANDROID)
+/* This should be in <stdio.h>, but Travis doesn't find it... */
+FILE *funopen(const void *cookie, int (*readfn)(void *, char *, int),
+ int (*writefn)(void *, const char *, int),
+ fpos_t (*seekfn)(void *, fpos_t, int), int (*closefn)(void *));
+
static int android_read(void *cookie, char *buf, int size);
static int android_write(void *cookie, const char *buf, int size);
static fpos_t android_seek(void *cookie, fpos_t offset, int whence);