Alright, so, I had finally gotten sound to work. it was wonderful. Sure, things ran a bit slow.
And then poof, out of nowhere- Quite literally, I made NO code change whatsoever, the program is now crashing with an OutOfMemory error. From- where else? the god damned GDI-Plus/Cairo. Who the fuck wrote that thing? Every single problem I’ve had has been related to that Piece of shit. If you’re going to write a compatible library, do it properly.
Another tidbit: I love how everybody who uses Linux says “Linux is more stable” perhaps the OS is, but when it comes to Mono you may as well leave any stability, mental or otherwise, at the door.
“MonoDevelop, please show me the contents of this variable in the locals window”
“naw, I’ll crash instead”
“MonoDevelop, please show me the locals window”
“sorry my window has gone dark again.”
It’s DRIVING ME INSANE. I finally get the thing working and then out of nowhere (again, I made absolutely no change to the code) it decides, “hey, you know what, I’m broken again, just for shits and giggles”.
What makes even less sense is it only crashes in certain locations. It still draws the sidebar just fine. the background is drawn. and so forth. Why the hell does it refuse to properly draw some items? I finally, after struggling for far too long to get the bloody IDE to allow me to set a bloody breakpoint (you know, those things that worked perfectly fine in Turbo Pascal 25 years ago?) I threw in a few try catches because the error was not being handled in the right place (of course it would have been easier to discover this if I had been able to set breakpoints or had a clue where the Trace.WriteLine output was going), so I discover the problem was in cBall, when it tries to draw. Somehow drawing a god damned Solid Ellipse is just so taxing that it runs out of memory. Because that makes sense.
And then I made a few changes, and the error was now a NullReferenceException in DrawSideBar, so I thought, good! Maybe I’m finding out where the problem is.
So, silly me, I believed that MonoDevelop wasn’t being a huge steaming pile and tried to use the debugging features, you know, the ones that programmers might use, like say, placing a breakpoint in said routine in a crazy attempt to determine what was null.
OH! but that is not going to fly! I try to run the program in Debug, as one might, and the poor thing refuses to start! Mono Essentially crashes! Oh the JOY of this IDE, it simply screams “please, don’t use me the way you might expect, most of my features are written by illegitimate children of famous actors, and are therefore unusable except from a distance using bad glasses”.
So I try again, and this time mono really does crash. This is bordering on psychotic folks.
So, I’ve decided that if somebody wants a Linux version of, at least, this program they can either figure it out themselves or look elsewhere.
I tried to make a small java test version but I couldn’t figure out how to use swing. By which I mean I couldn’t import the library. But that’s another story.
EDIT: cleaned up my swearing here 😛 it was a lot even for me. Also, in the meantime I was able to create a small working application but couldn’t find the motivation to bother trying to figure out where swing paints. (having to look up in the documentation for exactly what routines to override, as opposed to being able simply type “override” in C# and see what I can override? No thanks. (also, I am probably clouded by my past attempts to work with java back in the “golden days” of the standard Java.AWT classes, which had the magical ability to provide sub-standard, barely OS-oriented controls for each Operating System.