- Looking at linux sound to try fix quake linux. Need oss
/dev/dspdevice, but oss has been replaced by ALSA (see below). ALSA replaced OSS, when OSS went proprietary, but subsequently OSS4 was released under opensource, but the integration has been minimal- OPTIONS:
- Trying to emulate OSS wih
padsporosspdpadspprovides cap 0x5100 (DSP_CAP_TRIGGER|DSP_CAP_MULTI|DSP_CAP_DUPLEX)osspdprovides cap 0x5300 (DSP_CAP_TRIGGER|DSP_CAP_MULTI|DSP_CAP_REALTIME|DSP_CAP_DUPLEX)- App <—> /dev/dsp <—> CUSE <—> osspd <—> ossp-padsp <—> pulseaudio
- Verified installation by
cat /dev/urandom > /dev/dsp - followed Bug #1857810 “osspd no longer works: ERR: failed to connect cont...” : Bugs : osspd package : Ubuntu
- Test game, ETQW Demo 1.4:
https://cdn.splashdamage.com/downloads/games/etqw/ETQW-demo2-client-full.r1.x86.runhttps://www.splashdamage.com/games/enemy-territory-quake-wars/ A) If the game fails to launch with "etqw-rthread", remove libgcc_s.so.1, libjpeg.so.62, libstdc++.so.6 from the game's directory; install libsdl1.2debian:i386, libjpeg62:i386, libstdc++6:i386 B) After launching and creating an account, quit the game. Edit ~/.etqwcl/base/etqwconfig.cfg: seta s_driver "oss" c) Relaunch the game with "etqw-rthread", test voice input in Settings and in-game.
- Test game, ETQW Demo 1.4:
- neither seem to provide
DSP_CAP_MMAPwhich is needed for quake
- Trying to emulate OSS wih
- OPTIONS:
- Fixed GLX initialization (extension limit ed8974a08fceab21e126bbe88f36479406cd4db2)
- Fixed full screen GL (fe4e67025e7b76b2c697877b137252ea61f1c2a3)
- TODO: Restoring video mode on shutdown is not functioning (desktop is left at whatever resolution game ran at)
wip:
diff --git a/WinQuake/gl_vidlinuxglx.c b/WinQuake/gl_vidlinuxglx.c
index 3f5dd95..31b9b86 100644
--- a/WinQuake/gl_vidlinuxglx.c
+++ b/WinQuake/gl_vidlinuxglx.c
@@ -444,13 +444,24 @@ void VID_Shutdown(void)
return;
IN_DeactivateMouse();
if (dpy) {
- if (ctx)
+ XSync(dpy, False);
+ if (ctx) {
+ printf("Found context, destroying...\n");
glXDestroyContext(dpy, ctx);
- if (win)
+ }
+ if (win) {
+ printf("Found window, destroying...\n");
XDestroyWindow(dpy, win);
- if (vidmode_active)
+ }
+// This seems to hang, unsure why
+#define ATTEMPT_TO_FIX_X_GLX_BUG
+#ifdef ATTEMPT_TO_FIX_X_GLX_BUG
+ if (vidmode_active) {
+ printf("Restoring video mode...\n");
XF86VidModeSwitchToMode(dpy, scrnum, vidmodes[0]);
+ }
XCloseDisplay(dpy);
+#endif
}
vidmode_active = false;
dpy = NULL;