test/testfilesystem.c
author Sam Lantinga <slouken@libsdl.org>
Sun, 07 Jul 2019 09:10:56 -0700
changeset 12928 3c4a4b1077cd
parent 12503 806492103856
permissions -rw-r--r--
Fixed bug 4710 - audio/alsa: avoid configuring hardware parameters with only a single period

Anthony Pesch

The previous code first configured the period size using snd_pcm_hw_par-
ams_set_period_size_near. Then, it further narrowed the configuration
space by calling snd_pcm_hw_params_set_buffer_size_near using a buffer
size of 2 times the _requested_ period size in order to try and get a
configuration with only 2 periods. If the configured period size was
larger than the requested size, the second call could inadvertently
narrow the configuration space to contain only a single period.

Rather than fixing the call to snd_pcm_hw_params_set_buffer_size_near
to use a size of 2 times the configured period size, the code has been
changed to use snd_pcm_hw_params_set_periods_min in order to more
clearly explain the intent.
     1 /*
     2   Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
     3 
     4   This software is provided 'as-is', without any express or implied
     5   warranty.  In no event will the authors be held liable for any damages
     6   arising from the use of this software.
     7 
     8   Permission is granted to anyone to use this software for any purpose,
     9   including commercial applications, and to alter it and redistribute it
    10   freely.
    11 */
    12 /* Simple test of filesystem functions. */
    13 
    14 #include <stdio.h>
    15 #include "SDL.h"
    16 
    17 int
    18 main(int argc, char *argv[])
    19 {
    20     char *base_path;
    21     char *pref_path;
    22 
    23     /* Enable standard application logging */
    24     SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
    25 
    26     if (SDL_Init(0) == -1) {
    27         SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_Init() failed: %s\n", SDL_GetError());
    28         return 1;
    29     }
    30 
    31     base_path = SDL_GetBasePath();
    32     if(base_path == NULL){
    33       SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't find base path: %s\n",
    34                    SDL_GetError());
    35       return 1;
    36     }
    37     SDL_Log("base path: '%s'\n", base_path);
    38     SDL_free(base_path);
    39 
    40     pref_path = SDL_GetPrefPath("libsdl", "testfilesystem");
    41     if(pref_path == NULL){
    42       SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't find pref path: %s\n",
    43                    SDL_GetError());
    44       return 1;
    45     }
    46     SDL_Log("pref path: '%s'\n", pref_path); 
    47     SDL_free(pref_path);
    48 
    49     pref_path = SDL_GetPrefPath(NULL, "testfilesystem");
    50     if(pref_path == NULL){
    51       SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't find pref path without organization: %s\n",
    52                    SDL_GetError());
    53       return 1;
    54     }
    55     SDL_Log("pref path: '%s'\n", pref_path); 
    56     SDL_free(pref_path);
    57 
    58     SDL_Quit();
    59     return 0;
    60 }