PDA

View Full Version : [BUG #5] (Linux) Could not open ALC device


VICIUS
26-04-2006, 12:58
Abbiamo ricevuto già due bug report su questo problema.
OS: Linux
Version: 2.6.16.9
Architecture: i386

VM Vendor: Sun Microsystems Inc.
Version: 1.5.0_06

Class Path:
.;/usr/lib/j2sdk1.5-sun/jre/lib:bin/:bin/release:bin/debug:lib/jar/jinput.jar:lib/jar/lwjgl_devil.jar:lib/jar/lwjgl.jar:lib/jar/lwjgl_util.jar:lib/jar/jogg-0.0.7.jar:lib/jar/jorbis-0.0.15.jar:lib/jar/trb.jar
JNI Library Path: lib/linux/

Exception: class it.diamonds.engine.audio.SoundException
Message: Unable to initializing Audio System: org.lwjgl.LWJGLException: Could
not open ALC device
Display Adapter Driver: null null

Stacktrace:
it.diamonds.engine.audio.SoundException: Unable to initializing Audio System:
org.lwjgl.LWJGLException: Could not open ALC device
at it.diamonds.engine.audio.Audio.<init>(Audio.java:53)
at it.diamonds.engine.audio.Audio.create(Audio.java:131)
at it.diamonds.GameLoop.create(GameLoop.java:107)
at it.diamonds.Game.setUpGame(Game.java:42)
at it.diamonds.Game.create(Game.java:141)
at it.diamonds.Game.main(Game.java:68)

Il problema è semplice. OpenAL usa di default solo il vecchio OSS che non supporta più stream contemporanei quindi prima di far partire il gioco si deve chiudere qualsiasi cosa provi solo anche ad accedere la scheda audio.

Chiedere all'utente di configurare openal lo escluderei. Richiede la conoscenza di un linguaggio di programmazione funzionale per scrivere il file di conf ( :mbe: )

Soluzione provvisoria. Lanciare java tramite aoss che intercetta le chiamate e le redirige ad alsa. In questo caso dobbiamo usare un .sh a parte perché jstub non è personalizzabile. Su alcune configurazioni aoss non è presente. Inoltre l'emulazione non è perfetta al 100% sul portatile su cui ho provato il suono andava leggermente più veloce del normale.

Soluzione definitiva. Capire come usare ALSA dal codice. Insomma qualcosa tipo if(linux) openal.setdriver(ALSA) else openal.setdriver(quellochevuoitu). Il problema è che la documentazione di OpenAL e Lwjgl è pari allo zero assoluto quindi non ho idea di dove mettere le mani.

come vogliamo comportarci ?

cisc
26-04-2006, 13:09
che ne dici di fare un script di shell a parte che rilevi la presenza di server sonori, ed usi quelli nel caso siano in funzione?

VICIUS
26-04-2006, 13:13
che ne dici di fare un script di shell a parte che rilevi la presenza di server sonori, ed usi quelli nel caso siano in funzione?
Si può rilevare se c'è qualcuno che usa la scheda audio e usare aoss di conseguenza. Ma forzare openal ad usare altri server sonori come esd/artsd non penso sia possibile.
Ho visto che esiste una cosa simile ad aoss per artsd ma non ho mai provato quindi non ti so dire se funziona.

ciao ;)

fek
26-04-2006, 13:24
Mi serve un work around per il problema. Basta spegnere qualunque applicazione che accede alla scheda audio?

VICIUS
26-04-2006, 13:27
Ho fatto una piccola prova con artsdsp e funziona. Se si usa KDE come DE questo c'è di sicuro quindi potrebbe essere una possibile soluzione per ora. Ora devo capire se c'è una cosa simile per esd. Intanto modifico lo scriptino che già avevo preparato nel eventualità questo bug spuntasse :D

ciao ;)

fek
26-04-2006, 13:56
Ok, allora includiamo lo scriptino nella build linux e scriviamo nelle Known Issues di usare quello in caso sorgesse il problema.

Poi se c'e' il server asd di gnome usiamo il kde della distribuzione fedora col server audio das del cas con la supercazzola antanisblinda setup avanti avanti avanti... problem solved :D

VICIUS
26-04-2006, 14:00
Poi se c'e' il server asd di gnome usiamo il kde della distribuzione fedora col server audio das del cas con la supercazzola antanisblinda setup avanti avanti avanti... problem solved :D
Ridi ridi che su windows è sorto lo stesso problema :p

ciao ;)

fek
26-04-2006, 14:10
porc

cdimauro
26-04-2006, 15:46
Ridi ridi che su windows è sorto lo stesso problema :p

ciao ;)
Com'è possibile? :confused: Su Windows c'è il mixer per i canali audio o sbaglio?

VICIUS
26-04-2006, 16:04
Com'è possibile? :confused: Su Windows c'è il mixer per i canali audio o sbaglio?
Non ne ho idea. So solo che è arrivata una mail con una "org.lwjgl.LWJGLException: Could not open ALC device" su un sistema Windows.

ciao ;)

Ufo13
26-04-2006, 16:25
Non ne ho idea. So solo che è arrivata una mail con una "org.lwjgl.LWJGLException: Could not open ALC device" su un sistema Windows.

ciao ;)

Magari non ha scheda audio? :P

fek
26-04-2006, 16:40
Magari non ha scheda audio? :P

Simple is better.

Che succede se non c'e' la scheda audio?

Due possibili soluzioni:

1) crashamo sempre e comunque in presenza di quell'eccezione perche' tanto e' una first playable di testing

2) disabilitiamo l'audio se avviene un crash in fase di creazione

Di solito sono per 1), ma qui 2) ha dei meriti e andrebbe considerata.

cdimauro
26-04-2006, 17:08
Nel caso 2) magari mettiamo un warning per avvisare l'utente. :)

BlueDragon
26-04-2006, 23:00
Su JavaGaming c'è un post interessante:
http://www.javagaming.org/forums/index.php?topic=13449.0

Ve lo riporto qui:

Re: Diamond Crash: Are you ready to crush?
« Reply #3 on: Today at 12:27:45 AM »

Another thing - the game crashes if there's no sound available (OpenAL library fails to create a context). The reason it failed on my machine is that the current libopenal.so bundled with LWJGL doesn't support ALSA, only OSS sound. I swapped your library with the one from Tribal Trouble and it worked nicely.

- elias

Passiamo alla Tribal Trouble? :)

VICIUS
26-04-2006, 23:06
Su JavaGaming c'è un post interessante:
http://www.javagaming.org/forums/index.php?topic=13449.0

Ve lo riporto qui:

Passiamo alla Tribal Trouble? :)
Ora provo a scricare questo tribal trouble e vedere cosa succede swappando le due lib.

ciao ;)

Jocchan
26-04-2006, 23:43
Sono anche io per la 2), possibilmente con warning come suggerito da Cesare.

VICIUS
27-04-2006, 01:43
Ora provo a scricare questo tribal trouble e vedere cosa succede swappando le due lib.

ciao ;)
Niente con la libreria della demo non cambia niente. Ora provo a chiedere al tizio se ci passa il suo file.

ciao ;)

fek
27-04-2006, 10:13
Nel caso 2) magari mettiamo un warning per avvisare l'utente. :)


Ok, implementiamo la 2) con un warning in console. Cesare, te ne occupi tu? Ci serve entro domani sera perche' chiudiamo la build per la seconda FP.

cdimauro
27-04-2006, 10:33
OK, me ne occupo io.

Mi servirebbe sapere se il problema si verifica all'apertura di Audio o alla creazione di un suono.

EDIT: ho appena visto che si verifica proprio alla creazione di Audio. Quindi è molto semplice da sistemare (dovrebbe bastare l'invocazione a Audio.createForTesting e poi scrivere sulla console un messaggio di avviso). :p

Ufo13
27-04-2006, 10:33
Ok, implementiamo la 2) con un warning in console. Cesare, te ne occupi tu? Ci serve entro domani sera perche' chiudiamo la build per la seconda FP.

Posso darci un'occhiata io ora se volete :)

cdimauro
27-04-2006, 10:35
Se hai tempo adesso, prova tu. :)

VICIUS
01-05-2006, 01:39
Bug Closed. :)