Giter VIP home page Giter VIP logo

sdl-audio-leak's Introduction

SDL 2.0.5 Audio Memory Leak Example

Mac OSX 10.10.5

Bug Report Link

This is a bare-bones program that opens an audio device, and outputs nothing. As time goes on, the memory consumption of the program continues to increase. Here are random samples of top after a bit of waiting:

$ top -stats command,time,mem -pid `pgrep sdl`

COMMAND                TIME             MEM
sdl-audio-leak         00:00.16         2384K+
sdl-audio-leak         00:02.94         2892K+
sdl-audio-leak         00:06.02         3452K+
sdl-audio-leak         00:09.02         3996K
sdl-audio-leak         00:12.02         4524K+
sdl-audio-leak         00:15.03         5052K+

Once the audio device is closed via SDL_CloseAudioDevice (and before SDL_Quit), the memory usage stops growing:

sdl-audio-leak         00:15.43         5032K

The top program doesn't update sdl-audio-leak after this point, and it stays at 5032K.

Tentative Fix

I've discovered a tentatitive fix, but it isn't very satisfying.

In SDL_coreaudio.m, in the function audioqueue_thread, change the inner loop from:

    while (!SDL_AtomicGet(&this->hidden->shutdown)) {
        CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.10, 1);
    }

To:

    while (!SDL_AtomicGet(&this->hidden->shutdown)) {
        CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, 1);
        SDL_Delay(20);
    }

sdl-audio-leak's People

Watchers

 avatar

Forkers

asdlei99

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.