From: Takashi Iwai Date: Fri, 11 Feb 2005 16:35:24 +0000 (+0000) Subject: Fix resmgr support X-Git-Tag: v1.0.9rc1~26 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=f9b9015245178df34454853c2dd74288ed16a136;p=alsa-lib.git Fix resmgr support Call normal open() before trying with res_open_device(). snd_open_device() is defined to do this procedure. --- diff --git a/include/local.h b/include/local.h index 539c36ac..6df4abca 100644 --- a/include/local.h +++ b/include/local.h @@ -34,6 +34,9 @@ #include #include "config.h" +#ifdef SUPPORT_RESMGR +#include +#endif #define _snd_config_iterator list_head #define _snd_interval sndrv_interval @@ -216,4 +219,17 @@ extern snd_lib_error_handler_t snd_err_msg; # define link_warning(symbol, msg) #endif +/* open with resmgr */ +#ifdef SUPPORT_RESMGR +static inline int snd_open_device(const char *filename, int fmode) +{ + int fd = open(filename, fmode); + if (fd >= 0) + return fd; + return rsm_open_device(filename, fmode); +} +#else +#define snd_open_device(filename, fmode) open(filename, fmode); +#endif + #endif diff --git a/src/control/cards.c b/src/control/cards.c index fbadb17c..2f452452 100644 --- a/src/control/cards.c +++ b/src/control/cards.c @@ -33,9 +33,6 @@ #include #include #include "control_local.h" -#ifdef SUPPORT_RESMGR -#include -#endif #ifndef DOC_HIDDEN #define SND_FILE_CONTROL "/dev/snd/controlC%i" @@ -54,19 +51,11 @@ int snd_card_load(int card) sprintf(control, SND_FILE_CONTROL, card); -#ifdef SUPPORT_RESMGR - open_dev = rsm_open_device(control, O_RDONLY); -#else - open_dev = open(control, O_RDONLY); -#endif + open_dev = snd_open_device(control, O_RDONLY); if (open_dev < 0) { char aload[32]; sprintf(aload, SND_FILE_LOAD, card); -#ifdef SUPPORT_RESMGR - open_dev = rsm_open_device(aload, O_RDONLY); -#else - open_dev = open(aload, O_RDONLY); -#endif + open_dev = snd_open_device(aload, O_RDONLY); } if (open_dev >= 0) { close (open_dev); diff --git a/src/control/control_hw.c b/src/control/control_hw.c index eb4a594a..627a5e5e 100644 --- a/src/control/control_hw.c +++ b/src/control/control_hw.c @@ -28,9 +28,6 @@ #include #include #include "control_local.h" -#ifdef SUPPORT_RESMGR -#include -#endif #ifndef PIC /* entry for static linking */ @@ -340,18 +337,10 @@ int snd_ctl_hw_open(snd_ctl_t **handle, const char *name, int card, int mode) fmode |= O_NONBLOCK; if (mode & SND_CTL_ASYNC) fmode |= O_ASYNC; -#ifdef SUPPORT_RESMGR - fd = rsm_open_device(filename, fmode); -#else - fd = open(filename, fmode); -#endif + fd = snd_open_device(filename, fmode); if (fd < 0) { snd_card_load(card); -#ifdef SUPPORT_RESMGR - fd = rsm_open_device(filename, fmode); -#else - fd = open(filename, fmode); -#endif + fd = snd_open_device(filename, fmode); if (fd < 0) return -errno; } diff --git a/src/hwdep/hwdep_hw.c b/src/hwdep/hwdep_hw.c index 22b7da12..73a3637c 100644 --- a/src/hwdep/hwdep_hw.c +++ b/src/hwdep/hwdep_hw.c @@ -26,9 +26,6 @@ #include #include #include "hwdep_local.h" -#ifdef SUPPORT_RESMGR -#include -#endif #ifndef PIC /* entry for static linking */ @@ -118,18 +115,10 @@ int snd_hwdep_hw_open(snd_hwdep_t **handle, const char *name, int card, int devi if (card < 0 || card >= 32) return -EINVAL; sprintf(filename, SNDRV_FILE_HWDEP, card, device); -#ifdef SUPPORT_RESMGR - fd = rsm_open_device(filename, mode); -#else - fd = open(filename, mode); -#endif + fd = snd_open_device(filename, mode); if (fd < 0) { snd_card_load(card); -#ifdef SUPPORT_RESMGR - fd = rsm_open_device(filename, mode); -#else - fd = open(filename, mode); -#endif + fd = snd_open_device(filename, mode); if (fd < 0) return -errno; } diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c index 91440540..8735a0ca 100644 --- a/src/pcm/pcm_hw.c +++ b/src/pcm/pcm_hw.c @@ -39,9 +39,6 @@ #include #include "pcm_local.h" #include "../control/control_local.h" -#ifdef SUPPORT_RESMGR -#include -#endif //#define DEBUG_RW /* use to debug readi/writei/readn/writen */ //#define DEBUG_MMAP /* debug mmap_commit */ @@ -1206,11 +1203,7 @@ int snd_pcm_hw_open(snd_pcm_t **pcmp, const char *name, fmode |= O_NONBLOCK; if (mode & SND_PCM_ASYNC) fmode |= O_ASYNC; -#ifdef SUPPORT_RESMGR - fd = rsm_open_device(filename, fmode); -#else - fd = open(filename, fmode); -#endif + fd = snd_open_device(filename, fmode); if (fd < 0) { ret = -errno; SYSMSG("open %s failed", filename); diff --git a/src/rawmidi/rawmidi_hw.c b/src/rawmidi/rawmidi_hw.c index 279e6919..6f084bc3 100644 --- a/src/rawmidi/rawmidi_hw.c +++ b/src/rawmidi/rawmidi_hw.c @@ -28,9 +28,6 @@ #include #include "../control/control_local.h" #include "rawmidi_local.h" -#ifdef SUPPORT_RESMGR -#include -#endif #ifndef PIC /* entry for static linking */ @@ -223,18 +220,10 @@ int snd_rawmidi_hw_open(snd_rawmidi_t **inputp, snd_rawmidi_t **outputp, assert(!(mode & ~(SND_RAWMIDI_APPEND|SND_RAWMIDI_NONBLOCK|SND_RAWMIDI_SYNC))); -#ifdef SUPPORT_RESMGR - fd = rsm_open_device(filename, fmode); -#else - fd = open(filename, fmode); -#endif + fd = snd_open_device(filename, fmode); if (fd < 0) { snd_card_load(card); -#ifdef SUPPORT_RESMGR - fd = rsm_open_device(filename, fmode); -#else - fd = open(filename, fmode); -#endif + fd = snd_open_device(filename, fmode); if (fd < 0) { snd_ctl_close(ctl); SYSERR("open %s failed", filename); diff --git a/src/seq/seq_hw.c b/src/seq/seq_hw.c index d1b3a336..7c2c4812 100644 --- a/src/seq/seq_hw.c +++ b/src/seq/seq_hw.c @@ -23,9 +23,6 @@ #include #include #include "seq_local.h" -#ifdef SUPPORT_RESMGR -#include -#endif #ifndef PIC /* entry for static linking */ @@ -443,24 +440,12 @@ int snd_seq_hw_open(snd_seq_t **handle, const char *name, int streams, int mode) fmode |= O_NONBLOCK; filename = SNDRV_FILE_SEQ; -#ifdef SUPPORT_RESMGR - fd = rsm_open_device(filename, fmode); -#else - fd = open(filename, fmode); -#endif + fd = snd_open_device(filename, fmode); if (fd < 0) { -#ifdef SUPPORT_RESMGR - fd = open(SNDRV_FILE_ALOADSEQ, O_RDWR); -#else - fd = open(SNDRV_FILE_ALOADSEQ, fmode); -#endif + fd = snd_open_device(SNDRV_FILE_ALOADSEQ, fmode); if (fd >= 0) close(fd); -#ifdef SUPPORT_RESMGR - fd = rsm_open_device(filename, fmode); -#else - fd = open(filename, fmode); -#endif + fd = snd_open_device(filename, fmode); if (fd < 0) { SYSERR("open %s failed", filename); return -errno; diff --git a/src/timer/timer_hw.c b/src/timer/timer_hw.c index d09c7a8f..2d5a92ee 100644 --- a/src/timer/timer_hw.c +++ b/src/timer/timer_hw.c @@ -27,9 +27,6 @@ #include #include #include "timer_local.h" -#ifdef SUPPORT_RESMGR -#include -#endif #ifndef PIC /* entry for static linking */ @@ -214,11 +211,7 @@ int snd_timer_hw_open(snd_timer_t **handle, const char *name, int dev_class, int tmode = O_RDONLY; if (mode & SND_TIMER_OPEN_NONBLOCK) tmode |= O_NONBLOCK; -#ifdef SUPPORT_RESMGR - fd = rsm_open_device(SNDRV_FILE_TIMER, tmode); -#else - fd = open(SNDRV_FILE_TIMER, tmode); -#endif + fd = snd_open_device(SNDRV_FILE_TIMER, tmode); if (fd < 0) return -errno; #if 0 diff --git a/src/timer/timer_query_hw.c b/src/timer/timer_query_hw.c index cb0e03c8..29c86fff 100644 --- a/src/timer/timer_query_hw.c +++ b/src/timer/timer_query_hw.c @@ -26,9 +26,6 @@ #include #include #include "timer_local.h" -#ifdef SUPPORT_RESMGR -#include -#endif #ifndef PIC /* entry for static linking */ @@ -102,11 +99,7 @@ int snd_timer_query_hw_open(snd_timer_query_t **handle, const char *name, int mo tmode = O_RDONLY; if (mode & SND_TIMER_OPEN_NONBLOCK) tmode |= O_NONBLOCK; -#ifdef SUPPORT_RESMGR - fd = rsm_open_device(SNDRV_FILE_TIMER, tmode); -#else - fd = open(SNDRV_FILE_TIMER, tmode); -#endif + fd = snd_open_device(SNDRV_FILE_TIMER, tmode); if (fd < 0) return -errno; if (ioctl(fd, SNDRV_TIMER_IOCTL_PVERSION, &ver) < 0) {