[maemo-commits] [maemo-commits] r19055 - in projects/haf/trunk/libsdl1.2/debian: . patches
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Aug 5 19:06:20 EEST 2009
- Previous message: [maemo-commits] r19054 - projects/haf/tags/libsdl-mixer1.2
- Next message: [maemo-commits] r19056 - projects/haf/tags/libsdl1.2
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: csaavedra Date: 2009-08-05 19:06:15 +0300 (Wed, 05 Aug 2009) New Revision: 19055 Added: projects/haf/trunk/libsdl1.2/debian/patches/330_pulseaudio_tease.diff Modified: projects/haf/trunk/libsdl1.2/debian/changelog projects/haf/trunk/libsdl1.2/debian/patches/series Log: libsdl1.2 (1:1.2.13-2maemo5) unstable; urgency=low * debian/patches/330_pulseaudio_no_tease.diff + Added (?\195?\129dam Endrodi) + Fixes: NB#120434 (SDL to libcanberra (was: constant CPU usage but no playback)) -- Claudio Saavedra <csaavedra at igalia.com> Wed, 05 Aug 2009 17:24:18 +0200 Modified: projects/haf/trunk/libsdl1.2/debian/changelog =================================================================== --- projects/haf/trunk/libsdl1.2/debian/changelog 2009-08-05 16:05:42 UTC (rev 19054) +++ projects/haf/trunk/libsdl1.2/debian/changelog 2009-08-05 16:06:15 UTC (rev 19055) @@ -1,3 +1,12 @@ +libsdl1.2 (1:1.2.13-2maemo5) unstable; urgency=low + + * debian/patches/330_pulseaudio_no_tease.diff + + Added (Ádam Endrodi) + + Fixes: NB#120434 (SDL to libcanberra (was: constant CPU usage but no + playback)) + + -- Claudio Saavedra <csaavedra at igalia.com> Wed, 05 Aug 2009 17:24:18 +0200 + libsdl1.2 (1:1.2.13-2maemo4) unstable; urgency=low * debian/patches/320_no_fullscreen_grab.diff Added: projects/haf/trunk/libsdl1.2/debian/patches/330_pulseaudio_tease.diff =================================================================== --- projects/haf/trunk/libsdl1.2/debian/patches/330_pulseaudio_tease.diff 2009-08-05 16:05:42 UTC (rev 19054) +++ projects/haf/trunk/libsdl1.2/debian/patches/330_pulseaudio_tease.diff 2009-08-05 16:06:15 UTC (rev 19055) @@ -0,0 +1,89 @@ +Index: SDL-1.2.13/src/audio/SDL_audio.c +=================================================================== +--- SDL-1.2.13.orig/src/audio/SDL_audio.c 2009-08-05 18:21:51.000000000 +0300 ++++ SDL-1.2.13/src/audio/SDL_audio.c 2009-08-05 18:22:15.000000000 +0300 +@@ -117,6 +117,20 @@ + }; + SDL_AudioDevice *current_audio = NULL; + ++/* ++ * Synchronization objects that need to be accessible in libsdlmixer. ++ * ++ * SDL_mixer_lock: ++ * Which will be current_audio->mixer_lock. ++ * SDL_mixer_blocker: ++ * Used by libsdlmixer in the audio thread to implement blocking, ++ * and by us to unblock it. ++ * ++ * Curiously gcc seems to assume private visibility, so let's override it. ++ */ ++SDL_mutex *SDL_mixer_lock __attribute__((visibility("default"))); ++SDL_sem *SDL_mixer_blocker __attribute__((visibility("default"))); ++ + /* Various local functions */ + int SDL_AudioInit(const char *driver_name); + void SDL_AudioQuit(void); +@@ -176,7 +190,6 @@ + + /* Loop, filling the audio buffers */ + while ( audio->enabled ) { +- + /* Fill the current buffer with sound */ + if ( audio->convert.needed ) { + if ( audio->convert.buf ) { +@@ -197,6 +210,12 @@ + SDL_mutexP(audio->mixer_lock); + (*fill)(udata, stream, stream_len); + SDL_mutexV(audio->mixer_lock); ++ ++ /* As fill() may block we have to recheck the flags ++ * and pretend we did the right thing. */ ++ if ( ! audio->enabled || audio->paused) { ++ SDL_memset(stream, silence, stream_len); ++ } + } + + /* Convert the audio if necessary */ +@@ -478,12 +497,13 @@ + /* Uses interrupt driven audio, without thread */ + #else + /* Create a semaphore for locking the sound buffers */ +- audio->mixer_lock = SDL_CreateMutex(); ++ audio->mixer_lock = SDL_mixer_lock = SDL_CreateMutex(); + if ( audio->mixer_lock == NULL ) { + SDL_SetError("Couldn't create mixer lock"); + SDL_CloseAudio(); + return(-1); + } ++ SDL_mixer_blocker = SDL_CreateSemaphore(0); + #endif /* SDL_THREADS_DISABLED */ + + /* Calculate the silence and size of the audio specification */ +@@ -626,10 +646,14 @@ + if ( audio ) { + audio->enabled = 0; + if ( audio->thread != NULL ) { ++ /* Unblock libsdlmixer, so SDL_RunAudio ++ * can return. */ ++ SDL_SemPost(SDL_mixer_blocker); + SDL_WaitThread(audio->thread, NULL); + } + if ( audio->mixer_lock != NULL ) { + SDL_DestroyMutex(audio->mixer_lock); ++ SDL_mixer_lock = NULL; + } + if ( audio->fake_stream != NULL ) { + SDL_FreeAudioMem(audio->fake_stream); +@@ -642,6 +666,12 @@ + audio->CloseAudio(audio); + audio->opened = 0; + } ++ if ( SDL_mixer_blocker ) { ++ /* The thread has finished, so it is safe ++ * to destroy it. */ ++ SDL_DestroySemaphore(SDL_mixer_blocker); ++ SDL_mixer_blocker = NULL; ++ } + /* Free the driver data */ + audio->free(audio); + current_audio = NULL; Modified: projects/haf/trunk/libsdl1.2/debian/patches/series =================================================================== --- projects/haf/trunk/libsdl1.2/debian/patches/series 2009-08-05 16:05:42 UTC (rev 19054) +++ projects/haf/trunk/libsdl1.2/debian/patches/series 2009-08-05 16:06:15 UTC (rev 19055) @@ -22,3 +22,4 @@ 300_dont_propagate_lpthread.diff 310_fix_marbles.diff 320_no_fullscreen_grab.diff +330_pulseaudio_tease.diff
- Previous message: [maemo-commits] r19054 - projects/haf/tags/libsdl-mixer1.2
- Next message: [maemo-commits] r19056 - projects/haf/tags/libsdl1.2
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]