From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:reply-to:user-agent:x-accept-language:mime-version:to:subject:references:in-reply-to:content-type:from; b=rbUVafLzDiWGg6RXBNOkKj4XsRoge6fGS68BIb8UEArhR72iJwFazDC7tM2sAqPHQKo0dDCjJEmlorrbrZkMzdPunl/xrQjU5CMhoa9J7nyNivH5f2UISR5DyS4qk53RuOj40BLntI9+cmtE8pzBmeBDssjWm5XUt43ZFR4FC38= Message-ID: <42E17830.9050706@inbox.ru> Date: Sat, 23 Jul 2005 03:50:24 +0500 User-Agent: Mozilla Thunderbird 1.0 (X11/20050302) X-Accept-Language: ru-ru, ru MIME-Version: 1.0 To: ALT Linux Sisyphus discussion list , Michael Shigorin Subject: Re: [sisyphus] Re: xmms =?KOI8-R?Q?=D0=C1=C4=C1=C5=D4?= References: <20050720182850.2864bd24@michael.rsuh.ru> <42DE3CEA.4020909@ikz.ru> <20050720220838.57862dff@michael.rsuh.ru> <20050720153411.GH32595@osdn.org.ua> <20050721103748.GD14505@osdn.org.ua> In-Reply-To: <20050721103748.GD14505@osdn.org.ua> Content-Type: multipart/mixed; boundary="------------070201010707080101050602" From: Boldin Pavel Cc: X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ldavinchi@inbox.ru, ALT Linux Sisyphus discussion list List-Id: ALT Linux Sisyphus discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2005 22:49:17 -0000 Archived-At: List-Archive: This is a multi-part message in MIME format. --------------070201010707080101050602 Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Michael Shigorin пишет: >On Wed, Jul 20, 2005 at 07:53:42PM +0400, Sergey V Turchin wrote: > > >>>2 zerg: давай-ка всё-таки забьём на поддержку aoss в >>>soundwrapper? Уж лучше пусть один поток работает, чем N -- >>>глючат. >>> >>> >>А зачем его через oss пускать с alsa? Давай лучше автодетект >>доделаем? К тому же рыба есть в виде патча для arts. >> >> > >Хорошо бы, да: > >- ты уверен, что эти грабли специфичны для xmms? >- я сейчас не могу этим заняться (люди заняты). > > ловите аттач. собирается... -- Boldin Pavel aka davinchi. mail-to: ldavinchi /at\ inbox _dot_ ru ZU - Zagovor Unixoidov. SSAU 303. --------------070201010707080101050602 Content-Type: text/x-patch; name="xmms-1.2.10-alt-alsa.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="xmms-1.2.10-alt-alsa.patch" diff -NurpP -x compile -x '*-config' -x '*.Tpo' -x '.*' -x 'output.*' -x autom4te.cache -x '*.orig' -x '*.o' -x '*.so*' -x '*.a' -x missing -x install-sh -x depcomp -x core -x '*~' -x '*.m4' -x 'config.*' -x configure -x '*.sh' -x libtool -x 'Makefile*' -x 'stamp*' xmms-1.2.10.orig/xmms/main.c xmms-1.2.10/xmms/main.c --- xmms-1.2.10.orig/xmms/main.c 2005-07-23 02:07:34 +0500 +++ xmms-1.2.10/xmms/main.c 2005-07-23 03:49:03 +0500 @@ -303,6 +303,66 @@ static const int mainwin_general_menu_en sizeof(mainwin_general_menu_entries) / sizeof(mainwin_general_menu_entries[0]); +#include +#include + +/* Check if alsa is configured */ +static int alsa_configured(void) +{ + void *alsa_handle; + int (*mixer_open)(snd_mixer_t **mixer, int mode); + int (*mixer_close)(snd_mixer_t *mixer); + int (*mixer_attach)(snd_mixer_t *mixer, const char *name); + int (*mixer_detach)(snd_mixer_t *mixer, const char *name); + char buf[64]; + int ret; + int err; + int i; + snd_mixer_t *handle; + snd_ctl_t *control; + + ret = 0; + + alsa_handle = dlopen("libasound.so", RTLD_NOW); + if (!alsa_handle) + return 0; + + mixer_open = dlsym(alsa_handle, "snd_mixer_open"); + mixer_close = dlsym(alsa_handle, "snd_mixer_close"); + mixer_attach = dlsym(alsa_handle, "snd_mixer_attach"); + mixer_detach = dlsym(alsa_handle, "snd_mixer_detach"); + if (!mixer_open || !mixer_close || + !mixer_attach || !mixer_detach) + { + dlclose(alsa_handle); + return 0; + } + + if ((err = mixer_open(&handle, 0)) < 0) + { + dlclose(alsa_handle); + return 0; + } + + for (i = 0; i < 32; i++) + { + snprintf(buf, 64, "hw:%d", i); + + if (mixer_attach(handle, buf) < 0) + continue; + + if (mixer_detach(handle, buf) < 0) + continue; + + ret = 1; + break; + } + + mixer_close(handle); + dlclose(alsa_handle); + return ret; +} + static void make_xmms_dir(void) { gchar *filename; @@ -499,6 +559,22 @@ static void read_config(void) cfg.gentitle_format = g_strdup("%p - %t"); if (cfg.outputplugin == NULL) { + if (alsa_configured()) + { + cfg.outputplugin = g_strdup_printf("%s/%s/libALSA.so", PLUGIN_DIR, + plugin_dir_list[0]); + if (access(cfg.outputplugin, R_OK)) + { + g_free(cfg.outputplugin); + cfg.outputplugin = NULL; + fprintf(stderr, "** ALSA configured, install xmms-out-alsa please\n"); + } + else + fprintf(stderr, "** ALSA configured, auto enabling ALSA output plugin\n"); + } + } + if (cfg.outputplugin == NULL) + { #ifdef HAVE_OSS cfg.outputplugin = g_strdup_printf("%s/%s/libOSS.so", PLUGIN_DIR, plugin_dir_list[0]); #elif defined(sun) --------------070201010707080101050602--