// assumes Allegro has been initialized, but audio hasn't been initialized
if (! al_install_audio())
log("Allegro 5 can't install audio");
Reason: You crash in al_create_voice, which, according to the call stack, is called from al_stricmp. But al_stricmp is a side-effect-free function to compare text strings, it definitely won't call al_create_voice, a sound routine. Since the call stack looks like this nonetheless, I suppose corrupt memory. Maybe Allegro was badly loaded this time. Maybe you ran out of free RAM. Maybe the RAM hardware has become faulty, but that is rare. Maybe there is a weird bug in Allegro or its D bindings. Definitely ignore and only investigate if it happens more often.
Simon, I'm getting constantly errors that I'm missing DLLs. It started with that allegro-debug-5.2.dll is missing. Can you say which of the countless instances you used (static or dynamic?, i686 or x86_64?, 5.2.3.0 or ~.1?). Do I need MingW?
After several hours of testing around I don't think I can build it without help. I actually don't even know when I successfully build such a build against debugging libraries.
The callstack may show al_stricmp only because it happens to be the closest known address in the DLL to the numeric address value observed in the callstack. It may actually be some private audio function in Allegro that cannot be mapped to a name at runtime, since there is no information about that function name and address.
When you ran against debugging libs, did Lix produce allegro.log? Post that if it did.
system.d(45) and system.d(62). Doesn't that mean anything?
Can it be related to the taskbar issue concerning software fullscreen on Win 7? On the Win 8.1 laptop I don't have the fullscreen taskbar issue and the taskbar crash is rare and hard to get. Although Arty has Win 8.0 and consistent crash.
What bugs me is that I don't get an allegro.log. I don't know why.
But nevertheless before fix #222 the crash doesn't seem so likely. Maybe ask Arty if he has the issue with an Lix instance earlier than 0.9.6.
I don't remember the taskbar issue re fullscreen. <_<;; I suppose it wasn't #262 (https://github.com/SimonN/LixD/issues/262) (Fullscreen, can't switch to other windows, Windows)?
Using the Win key: Clicking on other tabs on the Taskbar doesn't seem to produce visible/overlapping windows (at least for me). But if you use the Start menu as is activated by the Win key (without clicking on the Taskbar beforehand) then it can be possible to produce visible/overlapping windows. If you have produced such a window, even clicking on the Taskbar seems to work in this respect again.
(You can always start other programs (and see them pop up in the Taskbar as tabs), but their windows are not always visible/are sometimes in the background as explained above.)
[...]
The general rule seems to be: Using keys in the first place to get to other windows brings you in a state where you can produce overlapping windows generally (even by clicking on the Taskbar) but using in first place the mouse to click on the Taskbar generally denies you such a state.
I fixed the crash in unstable/master. Now, you should hear no audio and get an error in the main menu, but can still continue playing.
Cannot repro on Linux.
- Does it fix the crash and give you audio every time you run the app from the quickstart bar?
- What happens when you change resolution or display mode during program run -- audio persists from the old window.
From my side it seems to look good. I haven't gotten the error even with the reliable seeming method.
But maybe Arty should test nevertheless, since he had it consistent.
Thanks, ccexplore.
Resolution change and display mode change seems to work fine for me. Music just runs on.
/* FIXME: The window specified here is probably very wrong. NULL won't work either. */
hr = device->SetCooperativeLevel(GetForegroundWindow(), DSSCL_PRIORITY);
In case Forestidia would still like to build again and produce an allegro.log file (I don't think we need it anymore, though): I've tried once again to pack debugging DLLs and LIBs, see attachment. Maybe I made a mistake earlier.
I doubt this is useful anymore because we're on a good track. I attached this merely for completeness.