mirror of
				https://github.com/Ryujinx/SDL.git
				synced 2025-11-04 14:24:53 +00:00 
			
		
		
		
	audio: Only allocate fake_stream if we're using the standard audio threads.
This commit is contained in:
		
							parent
							
								
									be8d7a46fb
								
							
						
					
					
						commit
						a05bde2170
					
				| 
						 | 
					@ -1149,7 +1149,6 @@ open_audio_device(const char *devname, int iscapture,
 | 
				
			||||||
    SDL_AudioDevice *device;
 | 
					    SDL_AudioDevice *device;
 | 
				
			||||||
    SDL_bool build_cvt;
 | 
					    SDL_bool build_cvt;
 | 
				
			||||||
    void *handle = NULL;
 | 
					    void *handle = NULL;
 | 
				
			||||||
    Uint32 stream_len;
 | 
					 | 
				
			||||||
    int i = 0;
 | 
					    int i = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!SDL_WasInit(SDL_INIT_AUDIO)) {
 | 
					    if (!SDL_WasInit(SDL_INIT_AUDIO)) {
 | 
				
			||||||
| 
						 | 
					@ -1338,19 +1337,6 @@ open_audio_device(const char *devname, int iscapture,
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Allocate a fake audio memory buffer */
 | 
					 | 
				
			||||||
    stream_len = (device->convert.needed) ? device->convert.len_cvt : 0;
 | 
					 | 
				
			||||||
    if (device->spec.size > stream_len) {
 | 
					 | 
				
			||||||
        stream_len = device->spec.size;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    SDL_assert(stream_len > 0);
 | 
					 | 
				
			||||||
    device->fake_stream = (Uint8 *) SDL_malloc(stream_len);
 | 
					 | 
				
			||||||
    if (device->fake_stream == NULL) {
 | 
					 | 
				
			||||||
        close_audio_device(device);
 | 
					 | 
				
			||||||
        SDL_OutOfMemory();
 | 
					 | 
				
			||||||
        return 0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (device->spec.callback == NULL) {  /* use buffer queueing? */
 | 
					    if (device->spec.callback == NULL) {  /* use buffer queueing? */
 | 
				
			||||||
        /* pool a few packets to start. Enough for two callbacks. */
 | 
					        /* pool a few packets to start. Enough for two callbacks. */
 | 
				
			||||||
        const int packetlen = SDL_AUDIOBUFFERQUEUE_PACKETLEN;
 | 
					        const int packetlen = SDL_AUDIOBUFFERQUEUE_PACKETLEN;
 | 
				
			||||||
| 
						 | 
					@ -1377,6 +1363,20 @@ open_audio_device(const char *devname, int iscapture,
 | 
				
			||||||
    if (!current_audio.impl.ProvidesOwnCallbackThread) {
 | 
					    if (!current_audio.impl.ProvidesOwnCallbackThread) {
 | 
				
			||||||
        /* Start the audio thread */
 | 
					        /* Start the audio thread */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Allocate a fake audio buffer; only used by our internal threads. */
 | 
				
			||||||
 | 
					        Uint32 stream_len = (device->convert.needed) ? device->convert.len_cvt : 0;
 | 
				
			||||||
 | 
					        if (device->spec.size > stream_len) {
 | 
				
			||||||
 | 
					            stream_len = device->spec.size;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        SDL_assert(stream_len > 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        device->fake_stream = (Uint8 *) SDL_malloc(stream_len);
 | 
				
			||||||
 | 
					        if (device->fake_stream == NULL) {
 | 
				
			||||||
 | 
					            close_audio_device(device);
 | 
				
			||||||
 | 
					            SDL_OutOfMemory();
 | 
				
			||||||
 | 
					            return 0;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* !!! FIXME: we don't force the audio thread stack size here because it calls into user code, but maybe we should? */
 | 
					        /* !!! FIXME: we don't force the audio thread stack size here because it calls into user code, but maybe we should? */
 | 
				
			||||||
        /* buffer queueing callback only needs a few bytes, so make the stack tiny. */
 | 
					        /* buffer queueing callback only needs a few bytes, so make the stack tiny. */
 | 
				
			||||||
        char name[64];
 | 
					        char name[64];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue